骨干视图1将值传递给另一个视图2

时间:2015-08-21 06:01:25

标签: backbone.js

这是第一个视图内容,其中第二个视图作为子视图加载到第一个视图。

  define([ 'jquery', 'underscore', 'backbone',
            'text!../../../../school-admin/classManagement.html',
            'views/schoolModule/stdManagementView'],
    function($, _, Backbone, hrManagementTemplate,StdManagementView) {
        var ClassManagementView = Backbone.View
                .extend({
                    // target item.
                    el : $("#schoolContentOuterPnl"),
                    render : function() {
                        var data = {};
                        // template
                        var compiledTemplate = _.template(hrManagementTemplate, data);
                        // append the item to the view's target
                        this.$el.html(compiledTemplate);
                    },
                    // Event Handlers
                    events : {
                        "click #btnStdInClassManagement" : "loadStdInClassManagement",
                        },

                    loadStdInClassManagement : function(){
                       //Here i want to pass value to another view
                        new StdManagementView({
                            el : $("#classManagementContenTtabContent")
                        });
                    },
                });
        return new ClassManagementView;
    });

这是我的第二个视图,当第一个视图上的事件被触发时。

  define([ 'jquery', 'underscore', 'backbone', 'datatables',
                    'text!../../../../school-admin/stdManagement.html' ],
            function($, _, Backbone, datatables,  stdManagementTemplate) {
                var StdManagementView = Backbone.View.extend({
                            initialize: function(){
                                this.render();
                            },
                            render : function() {
                                var data = {};
                                // template
                                var compiledTemplate = _.template(
                                        stdManagementTemplate, data);
                                // append the item to the view's target
                                this.$el.html(compiledTemplate);
                                },
                            // Event Handlers
                            events : {},
                                });
            return StdManagementView;
            });

从上面的代码中我如何将视图1中的动态值传递给视图2.

1 个答案:

答案 0 :(得分:1)

从您的代码中看起来您只想在创建第二个视图时传入一次值。因此,您可以将其传递到第二个视图的constructor,它将成为传入的选项对象的一部分。

例如

//view 1
loadStdInClassManagement : function(){
   //Here i want to pass value to another view
        new StdManagementView({
          el : $("#classManagementContenTtabContent"),
          someValue: 'something'
    });
 }


//view 2
 var StdManagementView = Backbone.View.extend({
         initialize: function(options){
         this.someValue = options.someValue; 
         this.render();
   },