【发布时间】: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 ofscope[attrs.draggableList] -
你绝对不想使用
eval,因为那不安全。请改用scope.$eval(attrs.draggableList):docs.angularjs.org/api/ng.$rootScope.Scope。但请记住,这不是双向绑定,如果您在指令之外更改列表,它不会更新。你的指令应该使用$observe和一个隔离范围。 -
@JoshDavidMiller 感谢您的建议,我按照您的建议进行了 eval 更改,它可以满足我的需要,因为列表不应有任何外部更改。
标签: javascript angularjs