我有一个这样创建的选择列表:
<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":"asdfm995@gmail.com"
},
"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":"asdfm995@gmail.com"
},
"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":"asdfm995@gmail.com"
},
"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">
无论如何,我认为这无关紧要,因为我在代码的以下几行中有效地进行了此初始化:
selectedActions[j].value = {
name: selectedActions[j].name,
id: selectedActions[j].id
};