我有一些问题用ko.mapping翻译/替换data-bind的值,这是我到目前为止所尝试的
我的观点
<span data-bind="translate: address.place"></span>
注意:address.place将由来自服务器的ko.mapping设置
我的viewModel
ko.bindingHandlers.translate = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
console.log(viewModel.address.city);// how i can get the cityName
if (viewModel.address.street._latestValue == "koeln") {
//set back city to cologne
}
},
update: function (element, valueAccessor) {
////
}
};
答案 0 :(得分:1)
这与KO映射插件没有任何关系。假设您正确地将初始数据放入viewmodel(无论您是否使用映射插件),您的所有绑定处理程序正在改变UI中显示的内容。
您可以通过通常名为bindingContext
的绑定处理程序中的a参数访问视图模型的其他成员。有关详细信息,请参阅this section of the KO docs。
所以你可以像这样重写你的绑定处理程序:
ko.bindingHandlers.translate = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
console.log(bindingContext.$data.address.city());// the cityName
if (bindingContext.$data.address.street._latestValue == "koeln") {
//set back city to cologne
bindingContext.$data.address.city('cologne');
}
},
/// add your update section if needed
};