[英]Store value in a directive for later use
我想將對象保存在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
每次迭代而ngRepeat
。
是否可以使用指令或其他方式存儲此值供以后使用?
為了避免重復可能很長的變量定義,可以使用ngInit
指令,該指令的內容將在每次創建相應元素時執行。
<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
的唯一適當用法是為ngInit
特殊屬性添加ngRepeat
,如下面的演示所示。 除了這種情況,您應該使用控制器而不是ngInit
來初始化作用域上的值。
您可以在這里做一些幼稚的事情,它將起作用:
<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會知道重復的范圍。
您可以使用ng-storage將其存儲在本地存儲中。 https://github.com/gsklee/ngStorage
這將允許您存儲它,然后在應用程序中的任何地方使用它。
Cookie,您也有ng-cookies https://docs.angularjs.org/api/ngCookies
試試看! 或cookieStorage
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.