Angularjs 无法从指令更新控制器变量
我有一个指示:Angularjs 无法从指令更新控制器变量,angularjs,Angularjs,我有一个指示: app.directive('hideButton', function () { return { restrict: "A", scope: { init: '=' }, replace : true, link: function(scope, elem, attrs) { if(scope.init) { e
app.directive('hideButton', function () {
return {
restrict: "A",
scope: {
init: '='
},
replace : true,
link: function(scope, elem, attrs) {
if(scope.init) {
elem.css('display', 'none');
scope.init = false;
}
elem.on('click', function() {
elem.css('display', 'none');
});
}
}
});
这里,init
是一个控制器变量
现在在指令中,我设置了
scope.init=false
,但是更改没有反映到控制器中。这是AngularJS中的一个常见问题,因为这是不直观的
如果将基元类型绑定到指令中(init
,在本例中为boolean
类型),绑定将丢失。试着把它包装成一个对象
{ value: true }
在你的控制器里
您的指令现在变为
if (scope.init.value) {
elem.css('display', 'none');
scope.init = false;
}
这里也回答了您的问题:这是AngularJS中的常见问题,因为这是不直观的 如果将基元类型绑定到指令中(
init
,在本例中为boolean
类型),绑定将丢失。试着把它包装成一个对象
{ value: true }
在你的控制器里
您的指令现在变为
if (scope.init.value) {
elem.css('display', 'none');
scope.init = false;
}
这里也回答了你的问题: