2013-12-20 139 views
1

我完全沉迷於這一個。一切工作正常(或現在足夠好),我需要的是將數據以非json格式返回工廠。我有一個semi-working plunker的所有細節。從angularjs工廠檢索對象屬性

基本上,第一頁(在Ctrl控制器下)是用戶可以檢查一堆盒子的地方。在選項集之間還有一個ng-switch(真正的東西比這些要多很多,所以listboxFactory保留了用戶的選擇)。當用戶轉到下一個頁面(或者因爲僞造它而在蹲點中的「下一頁」)時,他們可以看到他們選擇了什麼。然後這些選擇會被包裝在一個json的帖子中回到服務器。我需要顯示用戶友好的名稱,但也有服務器選擇的ID#。

如果我把value =「{{item.name}}」放在原來的複選框ng-repeat中,一切都很好。除了這個事實,我有一個工廠的名稱,而不是服務器所需的ID。在工廠做第二個數組(一個用於選定的名稱,一個用於相應的選定ID)看起來像是矯枉過正,理論上我可以將每個選擇作爲一個對象添加,然後在第二個頁面上根據需要提取屬性。

實際上,這不起作用。下面是我得到的,如果我附和工廠,做出選擇後:

[ "{\"id\":1,\"name\":\"Firstplace\"}", "{\"id\":2,\"name\":\"Second place\"}" ] 

...我不知道,但那些反斜槓似乎是把每一種選擇轉換爲字符串,因爲有隻引號內方括號。我試過在腳本中編輯第54行,但我得到錯誤。它不是這樣的:

if (checked && index == -1) { 
    if (setup) elem.prop('checked', false); 
    else scope.list.push({ 
     id:"scope.value.id", 
     name:"scope.value.name" 
    }); 

在html方面,它不喜歡我在ng-repeat中嘗試過的任何變體。似乎所有惡夢的根源在於推動創造變形的json。我已經嘗試了所有這些第二頁/輸出:

{{item}} 
{{item.name}} 
{{item.item.name}} 

的作品是{{項目}}和勿庸置疑這是很醜陋的唯一的一個。有沒有人遇到過這個,並有任何提示如何解決這個問題?提前謝謝了。

回答

1

使用@會將您的對象轉換爲字符串,您應該只使用對item對象的引用,而使用=

變化{{item}}只是item作爲參考:

<input type="checkbox" name="group1" value="item" ng-model="isChecked" checkbox-list='checkedCity' /> 

在指令中使用=

scope: { 
    list: '=checkboxList', 
    value: '=' 
}, 

看到updated plunker

+0

我不知道是否在手舞足蹈,這是這麼容易,或者因爲完全忽略@細節而慚愧。非常感謝! – kl02