我有一个指令:
var ActorDisplayDirective = function() {
return {
replace : false,
restrict : 'AE',
scope : {
actor : "="
},
templateUrl: staticContext + '/angular-app/templates/actor-display-template.html',
link : function(scope, elem, attrs) {
},
}
};
这在某些地方工作正常,但在其他地方则不然。这是我的代码,用于显示它不起作用的地方:
<p>CAP: {{can_approve_for}}</p>
<p>
Actor display template:
<span actor-display actor='can_approve_for'></span>
After template
</p>
CAP: ...
显示数据,该指令的 actor
值为 null。为什么?我的 Controller 执行以下操作:
dataFactory.getCanApproveFor().then(function(data) {
$scope.can_approve_for = data;
});
因此,我可以在页面上看到该值,但指令没有显示它。我假设这是一个计时/刷新的事情,但这个指令在 ng-repeat 中的其他地方起作用,因为我猜,因为 ng-repeat 是在 hte 对象已经设置后评估的。这种情况我该怎么办?
最佳答案
您实际上并未将 ActorDisplayDirective
声明为指令。它只是一个简单的函数,返回一个看起来像指令的对象。
你必须告诉 Angular 它是一个指令,如下所示:
angular.module('someModule', [])
.directive('actorDisplay', function () {
return {
replace: false,
restrict: 'AE',
scope: {
actor: "="
},
templateUrl: staticContext + '/angular-app/templates/actor-display-template.html',
link: function (scope, elem, attrs) {
},
}
})
关于javascript - Angular Directive(指令)范围为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35663616/