Knockout.js Durandal/热毛巾水疗、Bing地图和击倒定制绑定
我正在使用Durandal/热毛巾水疗中心,这里描述了Bing地图库。此库创建用于访问地图控件的自定义ko绑定 对于durandal,这种绑定只能以一种方式工作。更改后,可以从地图控件获取值(例如缩放级别),但当我要在单击后设置缩放级别时,它不起作用 在Durandal之外,当我在一个简单的html页面上测试它时,一切都正常 知道怎么了吗?任何帮助都将不胜感激 我的viewmodel:Knockout.js Durandal/热毛巾水疗、Bing地图和击倒定制绑定,knockout.js,bing-maps,durandal,custom-binding,hottowel,Knockout.js,Bing Maps,Durandal,Custom Binding,Hottowel,我正在使用Durandal/热毛巾水疗中心,这里描述了Bing地图库。此库创建用于访问地图控件的自定义ko绑定 对于durandal,这种绑定只能以一种方式工作。更改后,可以从地图控件获取值(例如缩放级别),但当我要在单击后设置缩放级别时,它不起作用 在Durandal之外,当我在一个简单的html页面上测试它时,一切都正常 知道怎么了吗?任何帮助都将不胜感激 我的viewmodel: var mapVM = function () { this.map = {
var mapVM = function () {
this.map = {
options: {
credentials: "bing key",
customizeOverlays: true,
showScalebar: false,
showMapTypeSelector: false,
enableClickableLogo: false,
enableSearchLogo: false,
},
mapview: {
zoom: ko.observable(4).extend({ throttle: 1 }),
},
};
this.testZoom = function () {
this.map.mapview.zoom(5);
};
};
视图:
我认为您的testZoom工作正常。但函数中对该的引用不具有映射属性:
var mapVM = function () {
var that = this;
that.map = {
options: {
credentials: "bing key",
customizeOverlays: true,
showScalebar: false,
showMapTypeSelector: false,
enableClickableLogo: false,
enableSearchLogo: false,
},
mapview: {
zoom: ko.observable(4).extend({ throttle: 1 }),
},
};
that.testZoom = function () {
that.map.mapview.zoom(5);
};
};
@Damian,我正试图破解路由器的routeinfo以支持嵌套菜单并携带对象,但不确定安全性。您可以查看一下我怀疑testZoom函数中的“this”值不是您认为它引用的值。在mapVM中创建一个名为self的变量,并将其指向这个var self=this;在这个.testZoom中,引用self.map.mapview.zoom(5)。请告诉我这是否可行。您可以查看您的console.log并检查是否报告了任何错误。
var mapVM = function () {
var that = this;
that.map = {
options: {
credentials: "bing key",
customizeOverlays: true,
showScalebar: false,
showMapTypeSelector: false,
enableClickableLogo: false,
enableSearchLogo: false,
},
mapview: {
zoom: ko.observable(4).extend({ throttle: 1 }),
},
};
that.testZoom = function () {
that.map.mapview.zoom(5);
};
};