Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.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
Javascript Model fetch()未触发任何事件_Javascript_Events_Backbone.js_Model_Fetch - Fatal编程技术网

Javascript Model fetch()未触发任何事件

Javascript Model fetch()未触发任何事件,javascript,events,backbone.js,model,fetch,Javascript,Events,Backbone.js,Model,Fetch,我创建了一个称为“艺术家”的主干模型和一个称为“艺术家视图”的主干视图。我成功地获取了模型,正如我在ChromeDevTools网络选项卡中看到的那样 然而,fetch当时没有触发任何“更改”事件。 奇怪的是,它在创建模型时很好地触发了“更改”事件,但在获取此事件时却没有触发 我可以在fetch()方法中使用success回调,但我觉得这不是最合适的方法。有什么想法吗 模型和视图初始化: var artist = new Artist({id: 3}); var artistView = new

我创建了一个称为“艺术家”的主干模型和一个称为“艺术家视图”的主干视图。我成功地获取了模型,正如我在ChromeDevTools网络选项卡中看到的那样

然而,fetch当时没有触发任何“更改”事件。 奇怪的是,它在创建模型时很好地触发了“更改”事件,但在获取此事件时却没有触发

我可以在fetch()方法中使用success回调,但我觉得这不是最合适的方法。有什么想法吗

模型和视图初始化:

var artist = new Artist({id: 3});
var artistView = new ArtistView({model: artist});
artist.fetch();
var ArtistView = Backbone.View.extend({

    initialize: function() {
        this.model.on("change", this.test());
    },

    test: function() {
        console.log(this.model.get("name"));
    }
});
然后我取回我的模型:

var artist = new Artist({id: 3});
var artistView = new ArtistView({model: artist});
artist.fetch();
var ArtistView = Backbone.View.extend({

    initialize: function() {
        this.model.on("change", this.test());
    },

    test: function() {
        console.log(this.model.get("name"));
    }
});
在我的主干视图类中,我听到来自模型的“更改”事件:

var artist = new Artist({id: 3});
var artistView = new ArtistView({model: artist});
artist.fetch();
var ArtistView = Backbone.View.extend({

    initialize: function() {
        this.model.on("change", this.test());
    },

    test: function() {
        console.log(this.model.get("name"));
    }
});
编辑:“同步”事件也不起作用。当我创建模型时,它会触发一个“同步”事件,但在成功获取模型时不会触发。

您需要使用“同步”事件

“更改”仅在属性更改时激发


将thx编辑为stephen。

问题来自我的事件侦听器。它实际上没有考虑上下文

以下是解决方案:

this.model.on("sync", this.test, this);
而不是

this.model.on("sync", this.test());

侦听同步事件。你是对的,同步更合适。刚刚测试过,但不幸的是它无法工作。在创建模型时调用测试方法,但在成功获取模型时不调用。疯狂…它应该来自我的事件侦听器,因为我刚刚手动触发了一个“sync”事件,但什么也没有出现。下面是解决方案:this.model.on(“sync”,this.test,this);:)