从另一个视图调用视图并在Backbone中为其传递模型的最佳方式

Best way to call view from another view and pass it a model in Backbone

本文关键字:视图 模型 最佳 方式 调用 另一个 Backbone      更新时间:2023-09-26

如何从另一个视图调用视图并将其传递给模型?在下面的代码中,我将在#button_click调用另一个视图,如事件中所示。我可以简单地调用新视图并将其传递给模型还是以更好的方式存在?

来电显示下方:

define(["jquery", "underscore","Handlebars","models/attore",
"text!templates/backend0.html"],
function ($, _, Handlebars,Attore,template) {
var BackendView0 = Backbone.View.extend({

    template: Handlebars.compile(template),

    events: {
        'click #button_cont': 'twitter_list',
    },

    initialize: function () {

    },
    render: function (eventName) {

       $(this.el).html(this.template());
      return this;

    },

     twitter_list: function () {
        var nome=$('#nome').val();
        var cognome=$('#cognome').val();
        var attore= new Attore({nome:nome,cognome:cognome});
   ---  Here I want call another view and pass it model attore---------
    },

  });
return BackendView0;

如果始终只有两个视图,则可以通过存储对另一个视图的引用来告诉它们彼此的情况。然后传递模型的方法可以做这样的事情:

this.otherView.model = this.model;

此引用可以存储在视图初始化中,也可以通过setter方法存储:

setOtherView: function(view){
    this.otherView = view;
}

您没有说明您的两个视图是彼此独立的还是层次结构的一部分。如果两种观点真的是分开的,那么他们根本不应该互相"呼唤"。每个视图都应该独立于页面的任何部分来管理自己的页面部分。

如果视图是层次结构的一部分(例如集合视图和模型视图),那么父视图应该负责创建子视图,在这种情况下,它可以像任何其他视图一样,将模型作为输入传递给构造函数。

我会这样做:

var myNewView = new AnotherView({ model: attore });