无法从指令
问题描述:
更新控制器变量我有一个指令:无法从指令
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;
}