gpt4 book ai didi

javascript - knockoutjs绑定(bind)不同的API对象

转载 作者:行者123 更新时间:2023-11-28 08:31:14 25 4
gpt4 key购买 nike

我正在使用 javascritp 处理一些 API,例如 dojo 工具包、谷歌地图 API、Arcgis API,...我想通过 knockout 将对象绑定(bind)到 View 侧。但API有自己特定的对象。例如:

一些API:

var map = new Map();

var layer = new BaseMapLayer();
map.add(layer)

var pointLayer = new PointLayer("name", {visible: true});
map.add(pointLayer);

API 开发人员给了我一个 PointLayer 对象。我可以在构造函数中设置一些选项,例如在 map 上显示可见。我们不知道它在后台做什么。这并不重要。

PointLayer 为我们提供了两种更改可见性的方法。

pointLayer.Show();
pointLayer.Hide();

但是我们不能使用pointLayer.visibile = false或true

就像这个例子一样,我实际上想通过 knockout 来绑定(bind)对象。

var viewModel = {
layers:[pointLayer]
}
ko.applyBindings(viewModel);

如何将图层可见性绑定(bind)到复选框?

最佳答案

您应该扩展或包装 PointLayer 对象,以便扩展/包装器具有 writeable computed observable沿着这些思路:

var _isVisible = ko.observable(false);

pointLayer.isVisible = ko.computed({
write: function(val) {
_isVisible(val);
if (!!val) { pointLayer.Show(); }
else { pointLayer.Hide(); }
},
read: _isVisible;
});

_isVisible observable 有点像 isVisible“属性”的私有(private)支持字段。它保持实际状态。 (如果 pointLayer 对象确实具有用于可见性的readonly属性,那么最好只使用该属性。)。

isVisible 计算的可观察量将做两件事:

  • 写入:根据新值显示或隐藏图层。
  • 读取:仅返回图层的当前状态。

此可观察量可以正常绑定(bind)到复选框。

关于javascript - knockoutjs绑定(bind)不同的API对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21847355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com