gpt4 book ai didi

javascript - 有什么理由从外部调用 Backbone.View.render 吗?

转载 作者:行者123 更新时间:2023-11-28 09:49:53 28 4
gpt4 key购买 nike

以下似乎是在 Backbone.js 中创建小型 subview 的非常常见的模式:this.$el.append(new ListItem({...}).render().el).

我只能想到外部调用render导致的问题,例如 View 的数据尚未获取。这就是为什么我让 View 负责它自己的渲染。我在这里遗漏了什么吗?

编辑:伪代码示例(省略不相关的代码等)以澄清问题:

为什么显式调用 render 的原因如下:

var FruitView = Backbone.View.extend({
render: function() {
this.$el.html(...);
}
});

var FruitListView = Backbone.View.extend({
render: function() {
this.collection.each(function(fruit) {
this.$el.append(new FruitView({...}).render().el);
});
}
});

与此相反,FruitView 负责自己的渲染:

var FruitView = Backbone.View.extend({
initialize: function() {
this.render();
},

render: function() {
this.$el.html(...);
}
});

var FruitListView = Backbone.View.extend({
render: function() {
this.collection.each(function(fruit) {
this.$el.append(new FruitView({...}).el);
});
}
});

最佳答案

父 View 可能绑定(bind)到一个集合,每个“行”绑定(bind)到一个模型。

因此,只要您有集合“reset”和“add”的重新渲染绑定(bind)(或者用于在“add”上附加新渲染行的单独函数),实例化和渲染 View 并不重要例如,“更改”行上的重新渲染绑定(bind)。

在最常见的情况下,我猜测如果集合为空,您的代码行所在的循环甚至不会运行。然后集合将“重置”, View 将首次渲染并包含数据。

但是,与往常一样,我可能没有捕获要点;-) 今天下午我会观看此帖子,了解您的任何笔记

编辑

我明白你的意思了。我真的不明白为什么。我想我通常只是以另一种方式写作,因为这是我第一次接触它时看到的很多模式。

正如你所说 - 所有数据/加载/绑定(bind)问题都不会涉及其中。

我猜在 init() 上不 render() 的唯一原因是,如果您有时想在不渲染的情况下进行初始化?

关于javascript - 有什么理由从外部调用 Backbone.View.render 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11209003/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com