我有一个将数据绑定到指令的奇怪问题。这是我宣布我的指令的方式:
<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未定义。
任何想法为什么?
答案 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)是正确的。