从angularjs 1.0.8升级到1.2.3后,ng-repeat无法正常工作

时间:2013-12-01 20:48:01

标签: angularjs

我最近从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}}绑定在一个地方,而不是另一个?

4 个答案:

答案 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会更复杂。我知道很多人会不同意,但似乎它比它的价值更麻烦。我有点后悔使用它。