0

我不确定这是否是一个错误,但是当 1.2.1 可以使用时,knockout.js 2.1 不适用于此示例。 http://jsfiddle.net/gurkavcu/kKNtv/

更新外部资源以使用 2.1 并停止工作: http ://cloud.github.com/downloads/SteveSanderson/knockout/knockout-2.1.0.js

dataList = [ {name:'length1',id:1},
             {name:'length2',id:2},
             {name:'length3',id:3},
             {name:'length4',id:4},
             {name:'length5',id:5} ]


var editOfferViewModel = { 
    selectedLength: ko.observable(),
    multiSelectedLength: ko.observableArray()    
}; 

ko.applyBindings(editOfferViewModel); 

$(document).ready(function() {
    editOfferViewModel.selectedLength(2);
    editOfferViewModel.multiSelectedLength(['2','3']);
});
4

1 回答 1

1

它绑定到 id 值,它是一个整数,但你告诉它的是字符串。也许这种行为在淘汰赛 1 和 2 之间发生了变化。如果您将选定的值设置为整数或将 id 属性字符串设置为它将起作用。这是一个简单的示例,仅显示所有选定项目的 JSON,您可以看到它包含字符串并且选择框不显示任何内容,然后当您选择项目时,它们显示为整数(小提琴)。这两个更改中的任何一个都将起作用:

dataList = [ {name:'length1',id:1},{name:'length2',id:2},{name:'length3',id:3},{name:'length4',id:4},{name:'length5',id:5} ]
// dataList = [ {name:'length1',id:'1'},{name:'length2',id:'2'},{name:'length3',id:'3'},{name:'length4',id:'4'},{name:'length5',id:'5'} ] // this would work
...
editOfferViewModel.multiSelectedLength(['2','3']);
// editOfferViewModel.multiSelectedLength([2,3]); // this works

我的问题是为什么这完全有效......

  1. dataList 不是您的视图模型的一部分,ko 是否也在所有窗口属性中搜索绑定?我不知道,但你可以看到它显示窗口对象中的“innerWidth”
  2. [selectedOptions] 绑定现在应该绑定到实际的 javascript 对象,但我猜如果您指定它使用的 optionsValue 参数。他们的文档中没有很好地解释这一点。我猜对此的支持是破坏字符串/整数不匹配工作的原因。
于 2012-05-28T07:37:12.177 回答