0

我想我在這裏有一些特殊的代碼,因爲我可以谷歌所有我的問題「太簡單」,它也沒有幫助自己來解決方案,可悲的是。 我收到了一個包含2個收音機的單選按鈕組。我正在迭代來自後端的「類型」數據以創建單選按鈕。 我的問題是數據綁定:當我想編輯一個對象時,它的「類型」設置正確,但未被視圖註冊,因此它不會選擇所需的選項。AngularJS:如何把正確的模型重複單選按鈕

Follwing我的情況:
後端提供我這是 「類型串」:

[ 
{"text":"cool option","enumm":"COOL"}, 
{"text":"option maximus","enumm":"MAX"} 
] 

HTML代碼:

<span ng-repeat="type in typeList track by type.enumm"> 
    <input 
     type="radio" 
     name="type" required 
     ng-model="myCtrl.object.type" 
     ng-value="type"> 
    {{type.text}} 
</span> 

一些解釋
我不想要使用「裸體」文本,我想使用索姆一種標識符 - 在這種情況下它是一個枚舉。選擇的值應該是整個「類型」,而不僅僅是「type.text」,因爲後端需要類型,而不是簡單的String。 因此,所有我做這始終是一個包啄,該type.text對於像格式化/ internationlized文本等

預選工作在控制器設置這樣的:this.object.type = typeList[0]; 第一個單選按鈕已經精選,精彩。

但是編輯對象時爲什麼不選中。我在HTML中用{{myCtrl.object.type}}做了一個「日誌」,結果是{"text":"cool option","enumm":"COOL"}。與預選時相同。我已經使用選擇輸入使用相同的「技術」,並且工作正常。我還發現一些谷歌結果說「由於父/子範圍使用$父母」。但是1)我沒有弄明白,2)認爲這不是問題,因爲我使用的是控制器範圍而不是$ scope,或者這種想法是錯誤的?

它可能被解釋得很糟糕,如果是這樣,對不起,但我希望有人1)得到我想要的,2)知道它的解決方案。

謝謝!

回答

1

如果您嘗試綁定到數組中的元素,我相信您需要將數組中的實際元素分配給您的模型屬性。

因此,這將創建一個新的obj並將其設置爲$scope.selectedType(不是你想要的):

$scope.selectedType = {"text":"cool option","enumm":"COOL"}; 

,而這給數組的第一個元素(這是你想要的)

$scope.selectedType = $scope.typeList[0]; 

因此,要改變模型,你可以查找該數組中的條目,並將其與像這樣

$scope.selectedType = $scope.typeList.filter(...) 
分配給你的模型

下面是這種方法的一個簡單示例http://plnkr.co/edit/wvq8yH7WIj7rH2SBI8qF

+0

首先,感謝您的努力!不幸的是你的笨蛋沒有幫助我,但我試圖用你的想法來獲取正確的數組元素。 我很高興,這**工作**!這既好又煩,爲什麼我不能用我已經填滿的模型?因爲我現在做的是這樣的: 'if(!self.object.type){0} {0} {0} self.object.type = $ scope.typeList [0]; } else { self.object.type = _.filter($ scope.typeList,self.object.type)[0]; }' 但沒關係,因爲它的工作對我來說已經足夠了:) 謝謝! – BAER 2014-08-30 08:03:18