angularjs
  • angularjs-directive
  • 2016-03-04 57 views 0 likes 
    0

    我有将数据绑定到指令的这个奇怪的问题。这是我声明我的指令:在指令中绑定数据会返回不一致的值

    <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); 
         } 
        }; 
    }); 
    

    中的第一个日志,数据属性是正确的: screenshot of console.log outputsecond log是不确定的。

    有什么想法为什么?

    +0

    你能提供一个JSFiddle或Plunkr来演示这个问题吗? – Matheno

    回答

    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

    +0

    对不起,依然如此。如果你可以在这里输入完整的代码,scope.data是undefined – Marcin

    0

    感谢@hadiJZ和@Unex我想通它出:

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

    因此将逻辑移出到控制器解决了我的问题。 我想到了当我添加一个$超时到子指令,并且日志(scope.data)是正确的。

    +0

    。谢谢 –

    相关问题