【问题标题】:dynamically add item to angularjs ng-repeat将项目动态添加到 angularjs ng-repeat
【发布时间】:2013-04-08 23:55:05
【问题描述】:

我有一个指令,可以生成一个具有添加和删除功能的拖放可重新排序列表。如果您在容器中单击,则会动态添加一个输入,您输入它,当您输入一个逗号时,您输入的值将被推送到与 ng-repeat 一起使用的列表中以构建列表。 (这个网站的用户应该有点熟悉:))

当支持它的初始对象不为空时,这非常有用。但是当对象开始为 null 并且您尝试添加第一项(通过检测 null 和范围。$apply 初始化)时,不会生成标记。

这里有一个笨拙的表达我的意思。 http://plnkr.co/edit/Momlgpfy82kHRPwXGR8V?p=preview

在我的应用程序中,数据来自外部来源,因此我无法确保非空列表。如何获得角度以正确响应数组初始化(以及稍后推送)?

【问题讨论】:

  • 为什么不能将初始列表设置为[] 而不是null
  • @JoshDavidMiller 是的,我实际上已经...原来是指令访问列表方式的错误...我实际上需要eval("scope." + attrs.draggableList) instead of scope[attrs.draggableList]
  • 你绝对不想使用eval,因为那不安全。请改用scope.$eval(attrs.draggableList)docs.angularjs.org/api/ng.$rootScope.Scope。但请记住,这不是双向绑定,如果您在指令之外更改列表,它不会更新。你的指令应该使用$observe 和一个隔离范围。
  • @JoshDavidMiller 感谢您的建议,我按照您的建议进行了 eval 更改,它可以满足我的需要,因为列表不应有任何外部更改。

标签: javascript angularjs


【解决方案1】:

将列表设置为空数组...当新项目被推入数组时,角度监听器将更新指令

http://plnkr.co/edit/h3GOpTX6Chh1wjcM9QrV?p=preview

【讨论】:

  • 谢谢,原来是指令中的错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-28
  • 1970-01-01
  • 1970-01-01
  • 2017-05-16
  • 1970-01-01
  • 2017-02-02
相关资源
最近更新 更多