在Marionette中从另一个应用程序调用一个应用程序的视图

时间:2015-07-30 06:34:21

标签: javascript backbone.js marionette

我有 IdentificationView ,必须在不同的应用中调用另一个视图的方法:

var MailingAddressView= Application.Views.ItemView.extend({
    setAddress: function(address) {
        if (address != null) {
            // this.autoCompleteBox.data('inputData') = address;
            ProWeb.EXTRACTED_ADDRESS = address;
            this.model.set('mailingAddress', address);
        }
    }
});

现在我的 MailingAddressView 是这样的:

{{1}}

我想知道从另一个视图调用一个视图的方法的方法是什么。请提供建议。

修改

这就是我的应用程序的设置方式:

  1. 首先调用应用
  2. 然后调用控制器
  3. 控制器中,查看会被调用并初始化。
  4. 因此,在我的 NameIdentificationView 中,我正在调用 MailingAddress 应用程序,该应用程序又控制调用控制器及其视图的所有过程。

1 个答案:

答案 0 :(得分:1)

您可以在共享模型上使用事件通道,触发和侦听事件以多种方式执行此操作,更简单的方法是使用Bsckbone事件。

在来电者中触发事件

loadMailingAddressView: function () {
                //call to mailing address view method setAddress() from here
             Backbonw.trigger('setAddress')
})

并在callee的initalize中倾听

    var MailingAddressView = Application.Views.ItemView.extend({

    initialize: function() {
        Backbone.on('setAddress', this.setAddress)
    },
    setAddress: function(address) {
        if (address != null) {
            // this.autoCompleteBox.data('inputData') = address;
            ProWeb.EXTRACTED_ADDRESS = address;
            this.model.set('mailingAddress', address);
        }
    },
});

确保在触发事件

时初始化被调用者视图