选择无法选择初始值

时间:2014-01-23 14:13:34

标签: knockout.js

我有一个使用JSON通过WepAPI获得的地址列表,例如:

data1 =
[ 
        {   address1  :"# 16  6 forks",   state:  'NC' },
        {   address1  :' 17 6 forks" ,     state:  'NY'},
        {   address1  :'18 forks",           state: 'AL'}
]

还列出了这样的州:

data2 = [
     {id:1,shortname:'NY',fullname:'New York'},
     {id:2 ,shortname:'NC',fullname:'North Carolina'}
     {id:3 ,shortname:'AL',fullname:'ALabama'}
] 

我将这些数据分别写入地址和状态变量,如下所示:

if (data !== null) {
 for (var i = 0; i < 1; i++) {
     self.addresses.push(ko.mapping.fromJS(data[i]));
  }
}

并声明为

ko.utils.arrayPushAll(self.states, data);

我的期望是,当html渲染时,地址中的相应状态项应该被选为初始值,例如在第一个地址的情况下为'NC',而是显示'NY',这是该州的第一个元素对象

调试时我发现当地址变量通过ko.mappingfromJS分配时,它被指定为'undefined',然后在此代码之后当states变量填充状态时,顶部地址的状态被赋值为&gt ;来自状态对象的第一个元素。这是我通过在地址和状态对象从JSON填充之前和之后放置一些控制台日志而观察到的。

我被困在这里。任何帮助都将不胜感激。

<tbody>
   <td data-corners="true" data-shadow="true" data-iconshadow="true" data-wrapperels="span" data-icon="arrow-down" data-iconpos="right" data-theme="c">
   <td> 
     <select data-icon="arrow-down"
             data-bind="options: $root.states, 
                        value: state, 
                        optionsValue: 'shortstatename',
                        optionsText: 'statename', 
                        optionsCaption :' '">
      </select>
   </td>                   
   </td>
</tbody>

1 个答案:

答案 0 :(得分:0)

如果您的数据确实是:

data1 =
[ 
        {   address1  :'# 16  6 forks' ,      state:   'NC' },
        {   address1  :'17 6 forks" ,        state:   'NY'},
        {   address1  :'18 forks",            state:   'AL'}
]

数据格式错误,表现不佳。您的内容不匹配(A '"配对)。

如果只是一个拼写错误,你应该在你的问题中解决它。