2014-01-23 126 views
0

我使用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变量被赋予状态时,顶部地址的状态被赋值为>来自状态对象的第一个元素。这是我通过在地址和状态对象从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> 
+0

'data'来自哪里,我看到'data1'&'data2'? – christiandev

+0

我通过ajax调用API并将它映射到数组格式 –

+0

可以显示所有代码吗? – christiandev

回答

0

如果数据真的是:

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

它是畸形数据,并不会表现良好。您在其中包含不匹配的引号(A '"配对)。

如果它只是一个错字,你应该修复它在你的问题。