指令:
app.directive('myDialog', ["$timeout", function($timeout) {
var fade = "fade";
return {
template: '<div ng-controller="AccountCtrl" ng-cloak="">' +
'<div class="ui {{message.type}} message message-overwrite" ng-class="{'+ fade +': enabled} ">' +
'<div class="header">{{message.title}}</div>' +
'<p>{{message.content}}</p>' +
'</div>' +
'</div>',
link: $timeout(function($scope) {
$scope.enabled = true;
console.log("Test");
}, 1000)
};
}]);
尝试运行我的指令时,我不断收到错误:
angular.js:13550 TypeError: Cannot set property 'enabled' of undefined
但我不确定适当的地方定义&#39;启用&#39;是
答案 0 :(得分:1)
如果要访问范围,则无法将指令的链接功能设置为total+=score
。 Angular调用链接函数并按顺序传入$timeout
,scope
和element
。因此,当使用超时时,内部函数(在您的情况下认为将由angular调用)不会被调用。 attrs
称之为。不是指令。这就是它未定义的原因。
你可以做些什么来解决这个问题:
$timeout
因此,在链接函数内移动超时。当然,您需要将link: function($scope) {
$timeout(function(){
$scope.enabled = true;
console.log("Test");
}, 1000);
}
注入到您已有的指令中。