Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
knockout.js 2.1和多选择绑定错误_Knockout.js - Fatal编程技术网

knockout.js 2.1和多选择绑定错误

knockout.js 2.1和多选择绑定错误,knockout.js,Knockout.js,我不确定这是否是一个bug,但是knockout.js 2.1不适用于此示例,而1.2.1适用于此示例。 更新外部资源以使用2.1,它将停止工作: 它绑定到id值,id值是一个整数,但您告诉它的是字符串。也许这种行为在击倒1和击倒2之间发生了变化。如果您将所选值设置为整数,或者使id属性字符串生效,那么它将起作用。下面是一个简单的示例,显示了所有选定项的JSON,您可以看到它包含字符串,并且选择框不显示任何内容,然后当您选择项时,它们显示为整数()。这两项更改中的任何一项都将起作用: dat

我不确定这是否是一个bug,但是knockout.js 2.1不适用于此示例,而1.2.1适用于此示例。

更新外部资源以使用2.1,它将停止工作:


它绑定到id值,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
我的问题是为什么这一切都有效

  • dataList不是视图模型的一部分,ko是否也搜索所有窗口属性以查找绑定?我不知道,但你可以看到它显示窗口对象的“innerWidth”
  • [selectedOptions]绑定现在应该绑定到实际的javascript对象,但我猜如果您指定optionsValue参数,它将使用该参数。这在他们的文章中没有很好的解释。我猜对这一点的支持是导致字符串/整数不匹配的原因
  • 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