簡體   English   中英

將值存儲在指令中以備后用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM