为什么我的淘汰选项绑定不起作用
Why don't my knockout options bindings work?
我正在尝试使用挖空将下拉列表绑定到选项列表的可观察数组。 据我所知,我已经遵循了我找到的示例,但它不起作用。 以下是我的代码的相关部分。 这是在 MVC 应用程序的 cshtml 文件中,所以你会在那里看到一些 Razor 语法。
$(function () {
var $thisdd = $("#@ddname"); //the JQuery selector for my dropdown
var dropdownItems = new ko.observableArray();
dropdownItems = getDropdownItemsFromDl("@ddname");
var newitem = ko.observable({ cname: ddcname, cvalue: ko.observable($thisdd.val()), cpublishtopic: "" });
classificationsViewModel.push(newitem());
$thisdd.attr("data-bind", "options: dropdownItems, optionsText: function(item) { return item.value; }, optionsValue: function(item) { return item.key; }, value: classificationsViewModel()[" + classificationsViewModel.indexOf(newitem()) + "].cvalue ");
ko.applyBindings(newitem);
});
调用getDropdownItemsFromDl后,dropdownItems在Chrome调试监视窗口中如下所示:
dropdownItems(): Array[14]
0: Object
key: "0"
value: "none"
__proto__: Object
1: Object
key: "1"
value: "Equity Portfolio"
__proto__: Object
2: Object
key: "2"
value: "Fixed Income Portfolio"
__proto__: Object
3: Object
4: Object
5: Object
6: Object
7: Object
8: Object
9: Object
10: Object
11: Object
12: Object
13: Object
length: 14
__proto__: Array[0]
分类ViewModel是一个ko.observableArray。 cvalue 是该数组中对象的 ko.observeable 属性。
下拉列表列表最后仅以数组中的第一项"None"结束。我的绑定属性有什么问题?
只要绑定到值是最后一个脚本行,我就可以工作。 之后的任何 javascript ko.applyBinding 行都不会被执行! 我将创建另一个问题来解决这种笨拙的问题,因为这对我的应用程序来说是一个严重的问题。
请注意,我最终使用了视图模型。 我无法直接绑定到可观察数组来工作。
另请注意,值:位于数据绑定属性中的选项:之前。 当我有值时:作为属性的最后一部分,选项绑定不起作用。
以下是我的代码中"有效"的相关行。
$(function () {
var $thisdd = $("#@ddname"); //the JQuery selector for my dropdown
var dropdownItems = getDropdownItemsFromDl("@ddname");
var newitem = ko.observable({ cname: ddcname, cvalue: ko.observable($thisdd.val()), cpublishtopic: "" });
classificationsViewModel.push(newitem());
var viewModel =
{
dditems : dropdownItems
};
$("#@ddname").attr("data-bind", "value: classificationsViewModel()[" + classificationsViewModel.indexOf(newitem()) + "].cvalue, options: dditems, optionsText: 'value', optionsValue: 'key'");
ko.applyBindings(viewModel);
ko.applyBindings(classificationsViewModel()[classificationsViewModel.indexOf((newitem())].cvalue);
});
我希望这个"答案"可以帮助其他人在这个问题上挣扎。
相关文章:
- 对象文字方法上的Javascript绑定不起作用
- Knockout输入绑定不起作用
- 角度指令双向绑定不起作用
- 指令中选择输入的双向绑定不起作用
- Angularjs:ui路由嵌套状态下的绑定不起作用
- 为什么我的淘汰选项绑定不起作用
- jQuery Ajax 元素的后期绑定不起作用
- 样式绑定不起作用
- 在内联编辑的情况下,Knockout绑定不起作用
- 指令链接中的绑定不起作用
- Angular 1.5组件双向绑定不起作用
- 点击处理程序多次触发,解除绑定不起作用
- KnockoutJS - 引导程序 3 模式绑定不起作用
- foreach:绑定不起作用 ko.mapping.fromJS 数据
- 虚拟元素的挖空绑定不起作用
- 委托的“模板”绑定不起作用
- Angularjs 双向数据绑定不起作用;$watch也不起作用
- 使用 D3js 时,带有 DOM 的 AngularJS 数据绑定不起作用
- 视频播放事件中的 Angular 2 路绑定不起作用
- 如果语句和挖空中的可见绑定不起作用