具有可写计算属性的Knockout.js绑定

具有可写计算属性的Knockout.js绑定,knockout.js,Knockout.js,html:(生成MyKnockoutMVC) JsFiddle: 我可能没有完全正确地进行绑定,我试图实现的是按的下拉式级联,它使用上述代码,除了“with:VehicleManufacturer”绑定,即未显示选定制造商的名称。是吗?小提琴坏了,因为您没有对ko.mapping的引用 更新: Andrew是对的,您不应该使用computeds来写入值计算的s应为只读。如果要从其他值派生值,请使用它们 我有办法解决你的问题。它使用计算的,但您也可以使用订阅Is?小提琴坏了,因为您没有对ko.ma

html:(生成MyKnockoutMVC)

JsFiddle:

我可能没有完全正确地进行绑定,我试图实现的是按的下拉式级联,它使用上述代码,除了
“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'); 
});