Aar*_*lee 3 javascript backbone.js
我越来越喜欢backbone.js了.我希望为给定的模型提供多个视图:
我的问题是,我正在寻求一种方法,让一种观点与另一种观点进行沟通,并选出以下内容:
/** Allow a model to keep track of it's views. **/
Backbone.Model.prototype.addView = function (view) {
// Ensure our model has a view array.
if (typeof this.views === 'undefined')
{
this.views = [];
}
// Append our newest view to the array only if it is not already present.
if (_.indexOf(this.views, view) === -1)
{
this.views.push(view);
}
}
/** Allow a model to remove all of it's views.
*
* @param {Object} args Any arguments will be provided to the view's method.
*/
Backbone.Model.prototype.unloadViews = function (args) {
var n = (typeof this.views === 'undefined') ? 0 : this.views.length;
for (var i = 0; i < n; i++)
{
var view = this.views[i];
if (typeof view.unloadView === 'function')
{
view.unloadView(args);
}
}
}
/** Allow a model to re-render all of it's views.
*
* @param {Object} args Any argyments will be provided to the view's method.
*/
Backbone.Model.prototype.renderViews = function (args) {
var n = (typeof this.views === 'undefined') ? 0 : this.views.length;
for (var i = 0; i < n; i++)
{
var view = this.views[i];
if (typeof view.render === 'function')
{
view.render(args);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题
附加信息
我在GitHub上分享了这个应用程序(非常简陋):https://github.com/aarongreenlee/Learning-backbone.js.如果您希望在该环境中查看代码,可以在此处访问它:https://github.com/aarongreenlee/Learning-backbone.js/commit/ea4e61d934d2f987726720e81c479f9d9bb86e09#diff-2(初始提交).
感谢您的时间和帮助!
Jul*_*ien 13
那么你的观点可以有一个像参考的树,但你的模型不应该知道你的观点!
您应该设置视图以侦听模型中的更改事件,并让它们做出相应的反应(重新渲染).
这样您就可以避免软件下部(应该是坚如磐石的模型)和更高部分视图之间的交叉引用.经典的MVC分离.
所以移动你的addViews,removeViews到Backbone.View它应该是好的.您将创建一个分层视图系统,就像sproutcore提供的那样.
玩得开心!
归档时间: |
|
查看次数: |
948 次 |
最近记录: |