角度指令范围为空

Angular directive scope is empty

本文关键字:范围 指令      更新时间:2023-09-26

我有一个指令:

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。 为什么? 我的控制器执行以下操作:

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

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

您实际上并没有将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) {
            },
        }
    })