如何从“指令”控制器更新“$scope”对象
How to update the `$scope` object from `directive` controller
我正在尝试从控制器更新 $scope
对象,但它没有更新。但在控制台中我正在更新状态。
这是我的代码:
var galleryMenu = ['$route', function ($route) {
return {
scope : true,
replace : true,
template : function () {
var page = $route.current.className || 'home';
return galleryMenuItem(page);
},
controller : function ($scope, $element) {
$scope.galleryProject = function () {
$scope.galleryShow = !$scope.galleryShow;
console.log($scope.galleryShow) //gives me true, but `DOM` not updating.
}
}
}
}];
您的指令正在使用 scope: true
,这意味着您已经创建了一个原型继承自父范围的范围。
那么你的 galleryShow
对象应该跟在 dot rule
之后
$scope.model = {};
$scope.model.galleryShow = 'something';
那么在你的指令中,你可以通过原型继承获得 $scope.model
对象,你可以通过 $scope.model.galleryShow
更改它,将更改父范围。
指令控制器
controller : function ($scope, $element) {
$scope.galleryProject = function () {
$scope.model.galleryShow = !$scope.galleryShow;
console.log($scope.model.galleryShow) //gives me true, but `DOM` not updating.
}
}
我正在尝试从控制器更新 $scope
对象,但它没有更新。但在控制台中我正在更新状态。
这是我的代码:
var galleryMenu = ['$route', function ($route) {
return {
scope : true,
replace : true,
template : function () {
var page = $route.current.className || 'home';
return galleryMenuItem(page);
},
controller : function ($scope, $element) {
$scope.galleryProject = function () {
$scope.galleryShow = !$scope.galleryShow;
console.log($scope.galleryShow) //gives me true, but `DOM` not updating.
}
}
}
}];
您的指令正在使用 scope: true
,这意味着您已经创建了一个原型继承自父范围的范围。
那么你的 galleryShow
对象应该跟在 dot rule
$scope.model = {};
$scope.model.galleryShow = 'something';
那么在你的指令中,你可以通过原型继承获得 $scope.model
对象,你可以通过 $scope.model.galleryShow
更改它,将更改父范围。
指令控制器
controller : function ($scope, $element) {
$scope.galleryProject = function () {
$scope.model.galleryShow = !$scope.galleryShow;
console.log($scope.model.galleryShow) //gives me true, but `DOM` not updating.
}
}