javascript - Angular Directive(指令)范围为空

标签 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 值为 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/

相关文章:

javascript - 从外部访问匿名函数内部的变量

Javascript - 将 dom 元素引用转换为节点

angularjs - 谷歌图表使用 Angular 指令时以逗号分隔

javascript - 为什么过滤器隐藏所有元素?

javascript - AngularJS:用破折号格式化 5 或 9 位邮政编码

javascript - Angular中与同级指令/ Controller 相关的列表(和主控/详细信息)

javascript - 如果 URL 包含这个,请在​​ Javascript 中执行此操作

javascript - jQuery.live() 处理程序多次触发

javascript - 为什么将 Canvas 保存为 jpeg 或 pdf 结果黑色图像?

angularjs - Angular JS 中是否有与 React JS 中的 props 相当的东西?