我使用Backbone作为一个webapp,我在其中从API调用中获取模型并使用它填充视图。在该视图中,有几个东西,其中包括textarea和某种聊天区域(其中包含其他视图)。到目前为止一切都很好。
我现在想再次调用API,如果初始模型已更改,我想更新该视图的部分内容。我现在的问题是,我担心如果我重新加载视图,人们可能在textarea中写的东西就不见了。 我想我可以使用jQuery进行调用并更新部分视图,但我认为这并不是Backbone背后的想法。
所以现在我的问题是;如何在不重新加载整个视图的情况下使用Backbone更新部分初始视图?欢迎所有提示?
答案 0 :(得分:1)
通常,视图绑定到模型,它代表DOM的一部分。
当你说模型改变时视图应该更新时,我首先想到的是这将是一个与输入框分开的视图。
例如,可以有一个父视图表示为包装元素,多个子视图表示不同的模型
您仍然可以从父视图管理事件,因为事件会冒出来
在处理子视图时,考虑正确的视图清理很重要。 Marionette.js是一个管理这个井的图书馆。
或者,您可以临时缓存用户输入并在渲染后将视图填充回来。
答案 1 :(得分:0)
您的观点需要倾听模型更改。如果渲染视图,则将模型传递给模板。在视图的初始化函数中,您告诉您查看模型更改的监听。请参阅here。
var view = Backbone.View.extend({
initialize: function(){
this.model.on('change', this.render, this);
},
render: function() {
// ...
}
});