【问题标题】:Best way to call view from another view and pass it a model in Backbone从另一个视图调用视图并将其传递给 Backbone 中的模型的最佳方法
【发布时间】:2014-04-24 14:54:33
【问题描述】:

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

在调用者视图下方:

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;

【问题讨论】:

    标签: javascript jquery backbone.js model-view-controller


    【解决方案1】:

    如果它总是只有 2 个视图,您可以通过存储对另一个视图的引用来告诉它们彼此。那么传递模型的方法可以这样做:

    this.otherView.model = this.model;
    

    这个引用可以存储在视图初始化或者通过setter方法:

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

    【讨论】:

      【解决方案2】:

      你没有说你的两个视图是相互独立的还是层次结构的一部分。如果视图真的是分开的,那么它们根本不应该相互“调用”。每个视图都应独立于页面的任何部分管理自己的页面部分。

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

      【讨论】:

        【解决方案3】:

        我会这样做:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-01-18
          相关资源
          最近更新 更多