Javascript 更新另一个模板主干中的变量

Javascript 更新另一个模板主干中的变量,javascript,backbone.js,backbone-views,Javascript,Backbone.js,Backbone Views,我的主干应用程序中有此视图 app.TabbedInterfaceView = Backbone.View.extend({ tagName: 'article', className: 'project_info', template: _.template($("#tpl-projects-tabs").html()), events: { 'mouseover .tabs ul.nav li' : 'activeTab', 'mouseleave .tabs ul.n

我的主干应用程序中有此视图

app.TabbedInterfaceView = Backbone.View.extend({

tagName: 'article',
className: 'project_info',

template: _.template($("#tpl-projects-tabs").html()),

events: {
    'mouseover .tabs ul.nav li' : 'activeTab',
    'mouseleave .tabs ul.nav li' : 'unactiveTab',
    'click .js-tab-link, span.new' : 'showHideContent',
    'click .closed' : 'showContent',
    "click .js-open-task-adder-form": "openTaskAdder",
},

initialize: function() {
    //this.render();
},

render: function() {
    console.log("TabbedInterfaceView triggered");
    console.log(app.tasks);
    var completedTasks = [];

    $.each(app.tasks.models, function(key, value) {
        if(value.attributes.completed != "active") {
            console.log("here");
            completedTasks.push(key);
        }
    });

    this.$el.empty().append(this.template({
        p: app.project.toJSON(),
        dates: app.projectDates,
        files: app.fileDetails,
        tasks: app.tasks,
        completedTasks: completedTasks
    }));

    return this;
 }
});
它使用这个模板

我想我可以将此添加到成功回调中

var tabbedInterface=app.TabbedInterfaceView
tabbedInterface.render()


但这似乎没什么作用,你可以在这篇文章的顶部看到渲染方法。如果我做错了什么,我认为重新呈现我的选项卡视图会起作用,但事实并非如此。

您需要调用new来实例化
应用程序。TabbedInterfaceView

var tabbedInterface = new app.TabbedInterfaceView();
tabbedInterface.render();
此外,您可能希望在app.TabbedInterfaceView中绑定一个事件处理程序,该处理程序侦听任务和调用的更改

app.TabbedInterfaceView = Backbone.View.extend({
   initialize: function() {
     this.listenTo(app.tasks,'change',this.render); // when app.tasks changes - re-render
   },
   // your existing code below //

即使确实调用了render()函数,这似乎没有任何作用。您可以看到正在从控制台调用
render
?是的,我的render函数中有console.log(“TabbedInterfaceView触发”),我可以在控制台中看到。您的视图是否已渲染?可能您没有更新app.tasks?当然会在listenTo也被触发时更新app.tasks。
var tabbedInterface = new app.TabbedInterfaceView();
tabbedInterface.render();
app.TabbedInterfaceView = Backbone.View.extend({
   initialize: function() {
     this.listenTo(app.tasks,'change',this.render); // when app.tasks changes - re-render
   },
   // your existing code below //