我有這樣創造了一個選擇列表:如何更改用ng-options綁定的選擇列表的當前值?
<div class="actionList" ng-repeat="selectedAction in outputDevice.selectedActions">
<select class="outputAction" ng-model="selectedAction.value" ng-options="action as action.name for action in outputDevice.userDevice.baseDevice.outputs">
<option value="">
Select Action
</option>
</select>
</div>
它包含在創建/編輯頁面中。當頁面處於編輯模式時,我想根據從服務器檢索到的某些值選擇列表中的哪個項目。目前,選擇列表將填充正確的選項,但我無法使選擇列表以正確的值開始。這裏是我填充頁面上的值代碼:
for(var i =1; i<result.length; i++){
var appyDevice = result[i];
var userDevice = appyDevice.device;
var selectedActions;
if(appyDevice.outputs){
selectedActions = appyDevice.outputs;
for(var j =0; j<selectedActions.length; j++){
selectedActions[j].value = {
name: selectedActions[j].name,
id: selectedActions[j].id
};
}
$ctrlScope.outputDevices.push({
userDevice: userDevice,
selectedActions: selectedActions
});
}
}
$ctrlScope.$apply();
我設置selectedActions[j].value
,其選擇列表結合了,但是它不會更新。任何想法爲什麼這不起作用?或者其他方式來做到這一點?
編輯: 這裏是結果JSON的樣品(忽略冗餘信息和材料,我們正在序列化工作仍然):
[
{
"user":{
"id":1,
"username":"asdf",
"email":"asdf"
},
"id":1,
"name":"SuperAppy",
"description":"some super duper descriptioon "
},
{
"appy":{
"user":{
"id":1,
"username":"asdf",
"email":"asdf"
},
"id":1,
"name":"SuperAppy",
"description":"some super duper descriptioon "
},
"inputs":[
{
"id":1,
"name":"Shake"
}
],
"outputs":[
{
"id":1,
"name":"TurnOn"
}
],
"device":{
"user":{
"id":1,
"username":"asdf",
"email":"[email protected]"
},
"baseDevice":{
"inputs":[
{
"id":1,
"name":"Shake"
},
{
"id":2,
"name":"Slide"
}
],
"outputs":[
{
"id":1,
"name":"TurnOn"
},
{
"id":2,
"name":"TurnOf"
}
],
"id":1,
"name":"iPhone5",
"osVersion":5.0,
"appVersion":0.0
},
"id":1
},
"id":1
},
{
"appy":{
"user":{
"id":1,
"username":"asdf",
"email":"[email protected]"
},
"id":1,
"name":"SuperAppy",
"description":"some super duper descriptioon "
},
"inputs":[
{
"id":1,
"name":"Shake"
},
{
"id":2,
"name":"Slide"
}
],
"outputs":[
{
"id":2,
"name":"TurnOf"
}
],
"device":{
"user":{
"id":1,
"username":"asdf",
"email":"[email protected]"
},
"baseDevice":{
"inputs":[
{
"id":1,
"name":"Shake"
},
{
"id":2,
"name":"Slide"
}
],
"outputs":[
{
"id":1,
"name":"TurnOn"
},
{
"id":2,
"name":"TurnOf"
}
],
"id":3,
"name":"GalaxyS3",
"osVersion":5.0,
"appVersion":0.0
},
"id":3
},
"id":2
}
]
編輯2: 按在評論中鏈接的可能重複,我嘗試一個ng-init
添加無濟於事:
<select class="inputAction" ng-model="selectedAction.value" ng-options="action as action.name for action in inputDevice.userDevice.baseDevice.inputs" ng-init="selectedAction.value=selectedAction.name">
第I油墨,這是無關緊要的,反正,因爲我切實做好這個初始化在我的下面幾行代碼:
selectedActions[j].value = {
name: selectedActions[j].name,
id: selectedActions[j].id
};
你試過[ng-selected](http://docs.angularjs.org/api/ng.directive:ngSelected)嗎? – mb21
這似乎是因爲我的選擇選項是由角度生成的,我將不得不在事後修改DOM來添加,這似乎與角度設計原則相反。 – GBleaney
你不需要'