指令中的绑定数据返回不一致的值

时间:2016-03-04 09:21:04

标签: angularjs angularjs-directive

我有一个将数据绑定到指令的奇怪问题。这是我宣布我的指令的方式:

<my-directive data="myArray"></my-directive>

我的指令代码如下:

angular.module('ngApp')
.directive('myDirective', function () {
    return {
        scope:{
            data: '='
        },
        template: '<div steps="data.length"></div>',
        restrict: 'E',
        link: function postLink(scope, element, attrs) {
            console.log(scope);
            console.log(scope.data);
        }
    };
});

在第一个日志中,data属性是正确的: screenshot of console.log output 但是second log未定义。

任何想法为什么?

2 个答案:

答案 0 :(得分:0)

这是你的解决方案:

<my-directive data-example="myArray"></my-directive>

您应该始终为变量data-<name>命名。这更容易维护,这可以防止像这样的关键字出错;)

angular.module('ngApp')
.directive('myDirective', function () {
    return {
        scope:{
            data: '=example'
        },
        template: '<div steps="data.length"></div>',
        restrict: 'E',
        link: function postLink(scope, element, attrs) {
            console.log(scope);
            console.log(scope.data);
        }
    };
});

我希望这有帮助,

实例:JsFiddle

答案 1 :(得分:0)

感谢@hadiJZ和@Unex我想出来了:

我的指令嵌套在另一个指令中。但是父指令使用了逻辑的链接函数,因为在创建时它没有子指令。

所以将逻辑移到控制器上解决了我的问题。 当我向child指令添加$ timeout时,我想通了,而log(scope.data)是正确的。