2012-11-09 103 views
0

我有两个视图文件views.js和views2.js。按钮单击views.js call.On views.js有一个按钮,需要触发views2.js 。但问题是,在按钮上单击views2.js 不起作用。如何从backbone.js视图调用视图

我写了一些代码。 在views.js

define(["backbone"], function(Backbone) { 

var UserView = Backbone.View.extend({ 
    tagName: "div", 
    render: function(){ 
     this.$el.html(this.model.get("desc") + "<button id='btn2' class='btn btn-    primary'>Next Page</button>"); 
     return this; 
    } 
}); 

var NextPageView = Backbone.View.extend({ 
    events: { 
     'click': 'firstquestion' 
    }, 

    render: function(){   
     return this; 
    }, 

    firstquestion: function(){ 
     //to solve circular dependency 
     require(['routes'],function(routes){ 
      var router = routes.pageRouter; 
      router.navigate('view', {trigger: true}); 
     }); 
    } 
}); 
    var views2 = require("views2");//should I call views2 here 
    var np2 = new views2.NextPageView2({el: $("#btn2")}); 
return { 
    UserView: UserView, 
    NextPageView: NextPageView 
}; 
}); 

在views2.js

define(["backbone"], function(Backbone) { 
var UserView2 = Backbone.View.extend({ 
    tagName: "div", 
    render: function(){ 

     this.$el.html(this.model.get("desc") + "<button id='btn3' class='btn btn-primary'>Next Page</button>"); 
     return this; 
    } 
}); 

var NextPageView2 = Backbone.View.extend({ 
    events: { 
     'click': 'secondquestion' 
    }, 
    render: function(){ 
     return this; 
    }, 
    secondquestion: function(){ 
     require(['routes2'],function(routes2){ 
      var router = routes2.pageRouter2; 
      router.navigate('view', {trigger: true}); 
     }); 
    } 
}); 
return { 
    UserView2: UserView2, 
    NextPageView2: NextPageView2 
}; 
}); 
+1

尝试调用代码 - 'var views2 = require(“views2”); var np2 = new views2.NextPageView2({el:this。$(“#btn2”)});'view of view.js。看看它是否工作 – deven98602

回答

0

你需要把主叫视图Require.js依赖。

+0

意见:{ 代表:[“jquery”,“下划线”,“骨干”,“views2”]}我应该这样写在congig.js – ana