我想在ngRepeat
中保存一个对象,以便我可以在其子代中使用该对象,如以下代码所示:
<div ng-repeat="bar in foo.bar>
<div ng-repeat="qux in baz.qux" myvalue="{'item1':foo.var1, 'item2':qux.var2}">
<div ng-click="myFirstFunction(myvalue)"></div>
<div ng-click="mySecondFunction(myvalue)"></div>
</div
</div
我想要生成然后使用的对象相当大,我宁愿不为每个ngClick
指令重复定义它。
我考虑将其保存到范围变量中,但对象将在ngRepeat
的每次迭代中更改。
是否有指令或其他方式可用于存储此值以供日后使用?
答案 0 :(得分:1)
为避免重复可能是长变量定义,可以使用https://github.com/minimagick/minimagick指令,每次创建相应的元素时都会执行其内容。
<div ng-repeat="bar in foo.bar>
<div
ng-repeat="qux in baz.qux"
ng-init="myValue = {'item1':foo.var1, 'item2':qux.var2 }"
>
<div ng-click="myFirstFunction(myValue)"></div>
<div ng-click="mySecondFunction(myValue)"></div>
</div>
</div>
但是,模板中的复杂代码很少是个好主意。根据文档的建议,考虑在控制器内移动逻辑:
ngInit
的唯一合适用途是对ngRepeat
的特殊属性进行别名,如下面的演示所示。除了这种情况,您应该使用ngInit
而不是ngInit
来初始化范围上的值。
答案 1 :(得分:0)
你可以在这里做一些天真的事情并且它会起作用:
<div ng-repeat="bar in foo.bar>
<div ng-repeat="qux in baz.qux">
<div ng-click="myFirstFunction(foo, quz)"></div>
<div ng-click="mySecondFunction(foo, quz)"></div>
</div>
</div>
当您点击时,Angular会知道重复的范围。
答案 2 :(得分:-1)
您可以使用ng-storage将其存储在本地存储中。 https://github.com/gsklee/ngStorage
这将允许您存储它,然后在应用程序的任何位置使用它。
答案 3 :(得分:-1)
cookies,你也有ng-cookies https://docs.angularjs.org/api/ngCookies
试试吧!或者cookieStorage