0
A
回答
1
一旦我在jsFiddle中添加了一个资源给knockout js文件,选择的填充工作就可以正常工作。我用http://knockoutjs.com/js/knockout-1.2.0.js
好的,我编辑了我的答案,并删除了大部分内容,一旦我意识到我错误理解了@ hyperslug的回复,然后去制作几乎完全相同的代码! @ hyperslug的答案,比我的稍好一些,因为我没有意识到removeAll会返回一个已删除项目的数组。
除了@ Hyperslug的回答,你也有一个按钮的启用状态的问题。在页面加载,这是通过
new ko.observableArray(),
代替
new ko.observableArray([""]),
后者解决创建,而不是0。
长度为1的可观察到的阵列为了获得按钮使能状态中之后的所有改变物品没有被检查,你似乎需要清除无效的高光或选择高光。 removeAll()再次拯救。 this.availHighlight.removeAll() 或 this.selectHighlight.removeAll()
在回答为什么@ hyperslug的$。每()的代码没有工作,这是因为一个jQuery内的每个()匿名函数,'this'是指集合中的项目,而不是viewModel实例。
$.each(removed, function(i,r){
//'this' is now the same as 'r', so the following line doesn't work as intended
this.available.push(r);
});
希望这有助于
1
注意removeAll()
返回删除的项目阵列。其次,没有相应的pushAll()
。此外,事实证明,没有必要关闭突出显示,可能是因为您正在删除元素。
var removed = this.available.removeAll(this.availHighlight());
for(var i = 0; i < removed.length; i++) {
this.selected.push(removed[i]);
}
//this.availHighlight([""]);
演示在这里:http://jsfiddle.net/7HyZC/
这应该已添加工作(但并没有为我):
$.each(removed, function(i,r){this.selected.push(r);});
我不能有我each
力学正确的地方..
相关问题
- 1. 淘汰赛选择结合
- 2. 淘汰赛选择/取消
- 3. 选择淘汰赛或kendo
- 4. 淘汰赛下拉列表
- 5. 淘汰赛选择选项不工作
- 6. 淘汰赛在表
- 7. 选择对象模式与淘汰赛
- 8. 淘汰赛映射和家长选择
- 9. 在淘汰赛
- 10. 淘汰赛JS:foreachBinding
- 11. 与淘汰赛
- 12. 淘汰赛datacontext
- 13. 使用淘汰赛js的筛选表
- 14. 订购淘汰赛的组件列表
- 15. bootstrap双列表框淘汰赛绑定
- 16. 淘汰赛组件
- 17. 淘汰赛的CheckedValue
- 18. 淘汰赛可观察阵列+选择框
- 19. 淘汰赛:添加/删除基于另一个选择下拉列表的选择下拉列表
- 20. 淘汰赛 - 在dependentObservable(或计算机)多选列表
- 21. 淘汰赛订阅多选下拉列表
- 22. 淘汰赛选定的项目变化
- 23. 淘汰赛结合复选框
- 24. 预选项目与淘汰赛
- 25. 淘汰赛选项结合,嵌套optionsValue
- 26. 自动勾选或使用淘汰赛
- 27. 淘汰赛JS条件选项结合
- 28. 如何使用淘汰赛选择列中的所有复选框?
- 29. 使用淘汰赛选择所有复选框
- 30. 选择选项使用淘汰赛 - 剑道组合框
这是绝招谢谢! – Razcer 2011-05-18 13:59:52
我编辑了JSFiddle以使其正常工作。 – Razcer 2011-12-01 14:41:04