骨干:视图不更新(重置事件)

Posted

技术标签:

【中文标题】骨干:视图不更新(重置事件)【英文标题】:Backbone : view doesn't update (reset event) 【发布时间】:2013-04-08 14:25:01 【问题描述】:

我目前正在使用 BackboneJS 通过主干模型从我的数据库中获取数据。

问题是我的应用程序没有触发我的重置事件,即使我的获取执行得很好,我的数据也没有显示在屏幕上。 如果我在控制台中执行 app.messages.toJSON(),我的数据会按要求返回。

你有什么想法吗?这是我的代码

var app = window.app = ;

// APP HERE

// Model

app.Message = Backbone.Model.extend(
    url : 'messages'
);

app.message = new app.Message;

// Collection

app.Messages = Backbone.Collection.extend(
    model : app.Message,
    url : 'messages'
);

// Views

app.messages = new app.Message(); 
app.messages.fetch();

app.ListView = Backbone.View.extend(
    template : Handlebars.compile($('#template-list').html()),

    initialize : function()
        _.bindAll(this, 'render');
        //this.collection.on('reset', this.render); 
    ,

    render : function()
        this.$el.html(this.template(
            collection : this.collection.toJSON()
        ));
        return this;
    

);

我要咬牙切齿了。

西蒙

编辑

毕竟我有这些代码

app.Router = Backbone.Router.extend(
    routes: 
        '*path' : 'home'
    ,
    home: function()
        this.views = ;
        this.views.list = new app.ListView(
            collection : app.messages
        );
        $('#list-shell').empty().append(this.views.list.render().el);
    
);

app.router = new app.Router();
Backbone.history.start(pushState : true);
Backbone.emulateJSON = true;

【问题讨论】:

类似***.com/questions/15603107/… ? 或者你在获取之后创建你的视图(这可能已经结束)? 我看不到你在哪里实例化你的ListView。在这里,您只是定义了ListView“类”。 @nikoshr : 已经试过了,不行:/ 如果我使用在文件中创建的对象,一切正常,我很确定它来自重置,但我不知道问题出在哪里:/ 【参考方案1】:

app.messages = new app.Message();我想这只是你在写问题时犯的一个错误。

至于问题本身,如果您使用的是 Backbone 1.0,如果您想触发 reset event,则必须使用 reset flag。 此外,如果您添加的代码确实是第一个代码之后,那么您是在创建路由器之前获取数据,因此是视图。即使获取方法是异步的,您也无法控制您在此处执行的操作。

【讨论】:

以上是关于骨干:视图不更新(重置事件)的主要内容,如果未能解决你的问题,请参考以下文章

功能性反应如何不重置状态?

watchOS 应用程序在显示睡眠后重置为根视图控制器

更新 UILabel Text 会重置情节提要?

vue 强制刷新子组件

调用ondraw后重置画布,然后再在android中调用它

JQuery在画布图像上画线并重置线而不影响图像