2015-09-14 164 views
1

訪問項目我有對象在服務的陣列,我想在一個視圖這樣選擇並以ng重複

<li ng-repeat="item in filteredItems = (resource.items | filter:multipleFilters..."> 
    <span class="title">{{item.escaped_name}}</span> 
</li> 

我想這些對象是可選擇的,其是容易的部分顯示。然後,我需要獲得所選項目的計數,並能夠遍歷所有項目以處理/更改數據。

什麼是保存和訪問選定項目的最佳方法?

請注意,所選項目可能會發生變化,例如,由於更改的過濾器,所選項目可能會消失。另外,我不想直接在數組中設置對象的選定屬性 - 對象數組位於服務中,並在許多列表中的應用程序中使用,我不想「清理」選定的屬性爲每個視圖。

+0

你可以選擇什麼意思?還有一個選定的屬性會使你的生活更容易與角度。國際海事組織,你應該爲此做一個模型(提供者),然後你可以有一個toJSON或其他東西來清理它的發送/接收。 Angular對於前端模型來說非常棒。 – ajmajmajma

+0

你想建立一個麪包屑,導航和結果集,我做了一個淘汰賽,而不是角度,但這不是一個微不足道的功能,這是一個系統,你有什麼嘗試?你將需要建立一個過濾器列表,一個標籤列表,一個結果列表和構建事件時添加/刪除過濾器 –

+0

通過選擇我只是意味着點擊它來選擇它。將所選屬性添加到每個項目的問題,列表可能會在同一個網站上使用兩次。 resource.items中的所有數據都來自服務,即使我對項目有一個選定的屬性,如果篩選出某個選定的項目,我將如何檢測該更改並將其設置爲false? – cboe

回答

0

你可以採取面向對象的方法,並創建模型來爲你做基本的工作。我一直處於相同的情況,它對我來說很有用,另外我認爲這是一個很好的工具,可以讓你使用它。你將有一個listModel和一個itemModel - 列表模型會有你的單個itemModel的列表。列表模型中,您將在使用此列表的項目之間使用1個實例。用一粒鹽來做這個,因爲這只是一個例子。

所以你必須在ListModel的

.factory('listModel', [singleItemModelInject, 
function(singleItemModel) { 

    function listModel(items) { 
     this.items = _.map(items, listModel.create); 
    } 

    listModel.create = function(value, name) { 
     return new listModel(value); 
    }; 

    listModel.prototype = { 
     get whatever() { 

     }, 
     set whatever() { 

     } 
    } 

    return listModel; 
} 
]); 

通知其注入singleItemModel - 這將是個別項目的模型,可以將看起來是一樣的,除了它會對你的創作上的所有信息與您通過它像什麼

.factory('singleItemModel', [whateverYouNeedInjected, 
function() { 

    function singleItemModel(item) { 
    this.name = item.name; 
    //default to not selected 
    this.selected = item.selected || false; 
    this.whateverElseYouNeed = item.whateverElseYouNeed 
    } 

    singleItemModel.create = function(value) { 
    return new singleItemModel(value); 
    }; 

,那麼你將有listModel的單個實例,你會在你的應用程序中使用,您可以切換獸皮或任何財產證明,只要你有你想要你的屬性getter和setter方法訪問(如名稱和選擇或任何你想要的),並有2種方式的限制,如果它被改變爲選擇任何地方,它是普遍的,因爲你正在使用的單個實例。

你也可以你,如果你不希望選定的值在整個應用程序來堅持,只有在一個頁面(或任何你正在使用它)單個實例

2

我通常包括ng-click標籤:

<li ng-repeat="item in ..." ng-click="select_item(item)"> 

item傳遞給select_item()將是用戶選擇的一個。