Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Knockout.js Durandal/热毛巾水疗、Bing地图和击倒定制绑定_Knockout.js_Bing Maps_Durandal_Custom Binding_Hottowel - Fatal编程技术网

Knockout.js Durandal/热毛巾水疗、Bing地图和击倒定制绑定

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 = {

我正在使用Durandal/热毛巾水疗中心,这里描述了Bing地图库。此库创建用于访问地图控件的自定义ko绑定

对于durandal,这种绑定只能以一种方式工作。更改后,可以从地图控件获取值(例如缩放级别),但当我要在单击后设置缩放级别时,它不起作用

在Durandal之外,当我在一个简单的html页面上测试它时,一切都正常

知道怎么了吗?任何帮助都将不胜感激

我的viewmodel:

    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);
    };
};