我在Angular JS中有简单的指令:
.directive("statusClass", function() {
return {
restrict: 'A',
scope: {
'status': '='
},
link: function(scope, element, attrs) {
switch (scope.status) {
case "pending":
case "Pending":
element.addClass('badge-default');
break;
case "completed":
element.addClass('badge-primary');
break;
}
}
}
})
并称之为:
<div status-class status="data.active"></div>
为什么当我在外面更改模型时:$scope.data.active = "go";
它不与指令绑定?所以我看不到指令中的chnages
答案 0 :(得分:1)
你需要使用$watch
来监听变量,然后触发函数。
因为链接功能在运行时执行。因此,当您更改指令范围变量时,除非您触发事件(例如函数),否则不会执行它。
.directive("statusClass", function() {
return {
restrict: 'A',
scope: {
'status': '='
},
link: function(scope, element, attrs) {
scope.$watch('status', function() {
switch (scope.status) {
case "pending":
case "Pending":
element.addClass('badge-default');
break;
case "completed":
element.addClass('badge-primary');
break;
}
})
}
}
})