Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.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 如何在主干js中从您的模型中侦听其他模型事件?_Javascript_Backbone.js - Fatal编程技术网

Javascript 如何在主干js中从您的模型中侦听其他模型事件?

Javascript 如何在主干js中从您的模型中侦听其他模型事件?,javascript,backbone.js,Javascript,Backbone.js,我的脊梁骨有问题。我有两种型号:A型和B型 我需要监听一个模型中的事件,例如A,然后在事件发生后在模型B的视图及其视图中进行更改 有没有人举一个简单的例子来说明如何在主干网中实现这些功能 var Model_A_View= Backbone.View.extend({ events: { // some events; "click" : "ok", }, initialize: function () { this.Model_A = new Mod

我的脊梁骨有问题。我有两种型号:A型和B型

我需要监听一个模型中的事件,例如A,然后在事件发生后在模型B的视图及其视图中进行更改

有没有人举一个简单的例子来说明如何在主干网中实现这些功能

var Model_A_View= Backbone.View.extend({


 events: {
   // some events;
     "click" : "ok",
  },

   initialize: function () {

    this.Model_A = new Model_A({ // });
  }

您的代码很难阅读,没有代码样式,还有一些synax错误

但是,您最好在视图的initialize函数之外创建模型,并在新建视图时将模型作为para传递:

作为您可以使用的变体。几个简单的步骤,如何做到这一点

1.指定事件全局对象:

window._vent = _.extend({}, Backbone.Events);
2.在视图/模型/集合中指定事件触发器。例如,对于您的视图:

var Model_A_View = Backbone.View.extend({
    events: {
       // some events;
       "click" : "ok",
    },
    initialize: function() {
        this.Model_A = new Model_A({});
    },
    ok: function() {
        vent.trigger('model_A:update', this.model); //you can also send your model   
    }
});
3.在模型中指定事件侦听:


您可以有一个全局事件总线。提供代码,您到目前为止尝试了什么?关于此解决方案被否决的原因有何解释?
window._vent = _.extend({}, Backbone.Events);
var Model_A_View = Backbone.View.extend({
    events: {
       // some events;
       "click" : "ok",
    },
    initialize: function() {
        this.Model_A = new Model_A({});
    },
    ok: function() {
        vent.trigger('model_A:update', this.model); //you can also send your model   
    }
});
var Model_B_View = Backbone.View.extend({
    initialize: function() {
        this.Model_B = new Model_B({});
        vent.on('model_A:update', this.updateModel, this);
    },
    updateModel: function() {
        //this function will be call after `model_A:update` event triggered
        //do something with Model_B
    }
});