具有可写计算属性的Knockout.js绑定
html:(生成MyKnockoutMVC) JsFiddle: 我可能没有完全正确地进行绑定,我试图实现的是按的下拉式级联,它使用上述代码,除了具有可写计算属性的Knockout.js绑定,knockout.js,Knockout.js,html:(生成MyKnockoutMVC) JsFiddle: 我可能没有完全正确地进行绑定,我试图实现的是按的下拉式级联,它使用上述代码,除了“with:VehicleManufacturer”绑定,即未显示选定制造商的名称。是吗?小提琴坏了,因为您没有对ko.mapping的引用 更新: Andrew是对的,您不应该使用computeds来写入值计算的s应为只读。如果要从其他值派生值,请使用它们 我有办法解决你的问题。它使用计算的,但您也可以使用订阅Is?小提琴坏了,因为您没有对ko.ma
“with:VehicleManufacturer”
绑定,即未显示选定制造商的名称。是吗?小提琴坏了,因为您没有对ko.mapping
的引用
更新:
Andrew是对的,您不应该使用computed
s来写入值<代码>计算的s应为只读。如果要从其他值派生值,请使用它们
我有办法解决你的问题。它使用计算的
,但您也可以使用订阅
Is?小提琴坏了,因为您没有对ko.mapping
的引用
更新:
Andrew是对的,您不应该使用computed
s来写入值<代码>计算的s应为只读。如果要从其他值派生值,请使用它们
我有办法解决你的问题。它使用computed
,但您也可以使用subscribe
来实现这一点。我认为computed
在这里使用是错误的(您链接的文章已关闭)。当您想要计算依赖于其他可观察属性的值时,通常使用计算的。computed的read
函数只返回计算本身
我会重新修改它以使用一个正常的可观察对象,并手动订阅该可观察对象上的更改:
var viewModelJs = {
"VehicleManufacturers": [{
"Id": 5,
"Name": "AUDI"
}],
"VehicleManufacturer": null
};
var viewModel = ko.mapping.fromJS(viewModelJs);
ko.applyBindings(viewModel);
viewModel.VehicleManufacturer.subscribe(function (manufacturer) {
alert('dfdf');
});
示例:我认为在这里使用计算的是错误的(您链接的文章已关闭)。当您想要计算依赖于其他可观察属性的值时,通常使用计算的。computed的read
函数只返回计算本身
我会重新修改它以使用一个正常的可观察对象,并手动订阅该可观察对象上的更改:
var viewModelJs = {
"VehicleManufacturers": [{
"Id": 5,
"Name": "AUDI"
}],
"VehicleManufacturer": null
};
var viewModel = ko.mapping.fromJS(viewModelJs);
ko.applyBindings(viewModel);
viewModel.VehicleManufacturer.subscribe(function (manufacturer) {
alert('dfdf');
});
示例:我不完全理解您的问题所在。您是否可以编写一个JSFIDLE来演示您的问题?因为它应该有用。。。我已经修改了这个问题并创建了JSFIDLE,希望它有意义。就我所见,没有充分的理由让车辆制造商计算。为什么你觉得你需要这样做?作为一个普通的可观察对象是很好的(而且也会起作用)。啊,所以这篇文章使用了可写的可观察对象。。。这些应该是对可观测数据的订阅。我不完全理解你的问题是什么。您是否可以编写一个JSFIDLE来演示您的问题?因为它应该有用。。。我已经修改了这个问题并创建了JSFIDLE,希望它有意义。就我所见,没有充分的理由让车辆制造商计算。为什么你觉得你需要这样做?作为一个普通的可观察对象是很好的(而且也会起作用)。啊,所以这篇文章使用了可写的可观察对象。。。这些应该是对观测的订阅。谢谢你修理小提琴。这就是我所拥有的。问题是,正如您在自己的小提琴中看到的,制造商名称绑定在
中似乎不起作用。问题是为什么?为什么?原因很多。底线是,我发布的最新fiddle链接正在运行。欢迎。一定要使用订阅来级联下拉列表。计算出的名称可以用于获取制造商名称,但是(希望)您应该只需要级联的Id。谢谢您修复了这个问题。这就是我所拥有的。问题是,正如您在自己的小提琴中看到的,制造商名称绑定在
中似乎不起作用。问题是为什么?为什么?原因很多。底线是,我发布的最新fiddle链接正在运行。欢迎。一定要使用订阅来级联下拉列表。computed可用于获取制造商名称,但(希望)您应该只需要级联的Id。我同意,我认为computed
write
函数看起来也不正确。沙皇使用的教程给出了一些非常糟糕的建议。以这种方式使用可写可观察对象是实现级联效应的错误方式。订阅将是最明智的方法。我确实怀疑使用computed在这里不正确,而且会令人困惑。谢谢你的确认。我同意,我认为computed
write
函数看起来也不正确。沙皇使用的教程给出了一些非常糟糕的建议。以这种方式使用可写可观察对象是实现级联效应的错误方式。订阅将是最明智的方法。我确实怀疑使用computed在这里不正确,而且会令人困惑。谢谢你的确认。
var viewModelJs = {
"VehicleManufacturers": [{
"Id": 5,
"Name": "AUDI"
}],
"VehicleManufacturer": null
};
var viewModel = ko.mapping.fromJS(viewModelJs);
ko.applyBindings(viewModel);
viewModel.VehicleManufacturer.subscribe(function (manufacturer) {
alert('dfdf');
});