backbone.js - 如何在不重新渲染 marionette.js 的情况下更新 View

标签 backbone.js model marionette fetch

如何使用 model.fetch() 更新 View ,即当我获取模型时,不应破坏或重新渲染 View 。它应该通过重置以前的模型来更新新模型。
this.model.fetch({success: this.render.bind(this)});
这段代码正在重新渲染我的 View ..我怎样才能用新模型更新 View

谢谢。

最佳答案

有多种方法可以根据您的需要更新 View 。

  • 如果 View 相当简单,并且只需要在模型获取时自动更新 View ,再次渲染 View 是最简单的(可以使用模型上的 Backbone 同步事件,并且可以使用 Marionette View 以声明方式处理模型事件modelEvents 哈希 - http://marionettejs.com/docs/marionette.view.html#viewmodelevents-and-viewcollectionevents )
    modelEvents: {'sync': 'render'}
    
  • 如果您在复杂 View 中更改的模型属性很少,您可以通过监听模型属性上的更改事件通过 jquery 直接更新 dom 元素:
    modelEvents: {'change:name':'nameChanged'}, 
    nameChanged: function(model, value){ this.$('#name').val(value);}
    
  • 如果需要在 View 和模型之间进行双向数据绑定(bind),可以使用像 Backbone.stickit 这样的框架 - https://github.com/NYTimes/backbone.stickit#usage
  • 关于backbone.js - 如何在不重新渲染 marionette.js 的情况下更新 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31083112/

    相关文章:

    javascript - 将 Backbone.js 添加到现有的 Spring MVC 应用程序

    javascript - 主干自定义事件 : getting caller object

    jquery - trigger.io:我应该使用 request.ajax 还是 jQuery.ajax

    ruby-on-rails - 带有 accepts_the_nested_attributes 的 belongs_to 不在对象中保存外键

    python - Django 模型 : mutual references between two classes and impossibility to use forward declaration in python

    html - Rails Backbone Marionette Assets 在更改时不再更新?

    javascript - 离线应用程序中的 Backbone.js

    javascript - 主干 View 继承共享属性

    django - 您如何向 django 管理页面用户公开批量创建?

    events - 事件聚合器、命令和请求/响应之间的区别