我最近从angularjs 1.0.8升级到1.2.3,这是一场噩梦。许多事情已经破裂,其中一些我已经能够弄清楚。 ng-repeat
存在我无法解决的问题。使用1.0.8时,以下代码按预期工作:
<ul id="my_list">
<li ng-click="doSomething('{{item.item_id}}')" ng-repeat="item in items">
<span>This is item {{item.item_id}}</span>
</li>
</ul>
但是,现在我已升级到1.2.3,<li>
每个item_id
都会显示<span>
中的doSomething('{{item.item_id}}')
(即“这是第1项”,“这是第2项” “等等),但该功能仍然只显示doSomething('1')
,而不是{{item.item_id}}
。为什么{{1}}绑定在一个地方,而不是另一个?
答案 0 :(得分:1)
ng-click
采用JS表达式,因此<li ng-click="doSomething(item.item_id)" ng-repeat="item in items">
应该有效。
答案 1 :(得分:1)
ngClick
不会插入表达式。请改用doSomething(item.item_id)
。
答案 2 :(得分:1)
正如Jeff和ceejayoz所指出的那样ng-click
需要Angular表达式,因此您可以访问范围属性而不绑定它们。
如果您需要将参数作为字符串使用,请使用此选项:
ng-click="doSomething(item.item_id.toString())"
要在DOM中添加值,您需要花括号,这会告诉Angular期望像ng-click
这样的表达式。
答案 3 :(得分:0)
我明白了。这是因为我用分号编写了函数作为结尾:doSomething('{{item.item_id}}');
。我发现onclick="doSomething('{{item.item_id}}')"
不起作用,但ng-click="doSomething('{{item.item_id}}')"
确实有用。
作为旁注:我现在已经使用angularjs工作了大约5个月,我不得不说它导致我的应用程序的复杂性增加,而且使用jquery会更复杂。我知道很多人会不同意,但似乎它比它的价值更麻烦。我有点后悔使用它。