为什么我添加到我的ngModel中的对象在通过console.log传递时显示为未定义的角色?

时间:2016-03-29 21:00:44

标签: arrays angularjs loops directive

我的角度应用程序中有两个指令。

指令1有一个ngModel,它是一个对象数组。 通过指令方法,我将一个对象推送到数组的末尾。

因此,例如,原始的ngModel数组是[1,2,3,4],我正在添加,因此数组看起来像[1,2,3,4,5]。

此ngModel作为ngModel传递给我的第二个指令。我可以console.log数组并查看所有5个项目,但是当我尝试访问最后一项时,我添加的项目,它没有显示。例如,如果我在数组上执行foreach,就像最后一项不存在一样。

我无法访问该项目。任何人都有任何想法?

谢谢!

1 个答案:

答案 0 :(得分:0)

我想您使用link函数在父指令中添加第五项。

link个功能有两种类型:prepost链接。假设您有parent和嵌套child指令。链接函数将按以下顺序调用:

  • parent pre-link
  • 儿童预先链接
  • child post-link
  • parent post-link

默认情况下,如果在指令对象表示法中使用link,则它将是后链接函数。

return {
   link: function (scope, element, attrs) { }
}

如果您在父级后链接中添加第五个元素,那么它将无法用于子级,因为它将在调用子级链接后添加。向孩子提供正确初始化数据的方法是使用预链接或控制器(但后者超出了范围)。

return {
    link: {
        pre: function (scope, element, attrs) { }
    }
}

以下是一个有效的plnkr示例:http://plnkr.co/edit/24KrGLdnkDCrLr2SzXhQ?p=preview