如何将计算可观察量添加到 KNOCKOUTJS 映射中
How to add computed observable to knockoutjs mapping
我正在使用映射插件根据从服务器发送的对象创建我的客户端视图模型。对象是基本地址信息,即:地址1,地址2,城市,州,邮政等...
绑定视图模型后,我希望在用户更改地址时更新谷歌地图画布。我创建了一个计算可观察量,用于检查输入的值并调用地图更新函数。当我不使用映射插件时,我之前有过这个工作,即模型是在本地定义的,但是一旦我引入了映射,我就无法将计算的可观察量附加到视图模型中。
我尝试按照映射插件文档中的说明进行操作,但计算的可观察量不会触发更新。我有一个自定义映射,它调用一个 mapModel,其中包含示例中计算的可观察量,但没有更新。
有什么想法吗?
$.getJSON("@Url.RouteUrl("
ContactUs_default ", new { action = "
GetPageModel ", Model.BusinessID})", function(result) {
//create map property
result.Data.Map = null;
var mapping = {
'Map': {
create: function(options) {
return new mapModel(options.data);
}
}
};
var viewModel = ko.mapping.fromJS(result.Data, mapping);
ko.applyBindings(viewModel);
});
var mapModel = function(data) {
ko.mapping.fromJS(data, {}, this);
this.Map = ko.computed(function() {
var address = "";
var enteredElements = 0;
if (this.Address1 != helpText) {
address += " " + this.Address1;
enteredElements++;
}
if (this.Address2 != helpText) {
address += " " + this.Address2;
}
if (this.City != helpText) {
address += " " + this.City;
enteredElements++;
}
if (this.State != helpText) {
address += " " + this.County;
enteredElements++;
}
if (this.PostalCode != helpText) {
address += " " + this.Postal;
}
alert("hi");
//only upate map if enough data has been entered to give accruate location
if (enteredElements >= 3) {
MYMAP.placeMarkers(address);
}
}, this);
};
当您通过映射插件发送数据时,您的所有属性都将成为可观察量。
这意味着您需要像这样访问它们
: if (this.Address1() != helpText) {
address += " " + this.Address1();
enteredElements++;
}
当您在计算的可观察量中将它们作为可观察量访问时,它将创建依赖项。 因此,目前计算的可观察量将得到初始评估,但它永远不会再次更新,因为它不访问任何可观察量的值。
相关文章:
- KnockoutJS添加和循环Observables
- 将下拉列表中的值添加到 KnockoutJS 中另一个下拉列表中的任何值集
- 在使用 KnockoutJS 从 API 加载字段后,将字段添加到 observableArray
- 如何将计算可观察量添加到 KNOCKOUTJS 映射中
- KnockoutJS:如何将一个observableArray添加到另一个
- KnockoutJS:使嵌套可排序在添加子级时自动展开
- 从javascript添加knockoutjs模板事件,而不是将事件添加到模板本身
- KnockoutJS-将计算值添加到可观察数组中
- 使用KnockoutJS在添加/删除按钮之间切换
- 如何在knockoutjs中为外部var添加值
- 使用KnockoutJS添加时高亮显示
- 如何在knockoutjs按钮点击事件中添加谷歌广告词转换跟踪代码
- KnockoutJs组件-添加默认类
- 如何添加自定义数据绑定到knockoutjs'模板绑定
- KnockoutJS:模板不会在可观察数组改变时更新(只在添加时更新,在删除时有效)
- 如何在knockoutjs中添加一个动态的add background-image绑定
- 在 KNOCKOUTJS 中将 2 路值添加到 Select
- 使用KNOCKOUTJS从foursquare api获取数据以存储数据并使用谷歌地图api在地图上添加标记
- 如何使用 KnockoutJS 将客户端分页添加到表中
- 如何在knockoutjs中添加一个动态类