角度指令范围为空

时间:2016-02-26 23:29:19

标签: javascript angularjs

我有一个指令:

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值为空。为什么?我的控制器确实:

dataFactory.getCanApproveFor().then(function(data) {
$scope.can_approve_for = data;
});

因此,我能够在页面上看到该值,但该指令未显示该值。我假设它是一个计时/刷新的东西,但是这个指令在ng-repeat的其他地方工作,因为ng-repeat在hte对象已经设置之后进行评估,我想。在这种情况下我该怎么做?

1 个答案:

答案 0 :(得分:1)

您实际上并未将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) {

            },
        }
    })