gpt4 book ai didi

javascript - 在主干 View 中调用 render() 方法的好方法

转载 作者:行者123 更新时间:2023-11-29 22:21:22 25 4
gpt4 key购买 nike

很久以前我就确信 render() 是 View 本身的特权,而不是父 View 的关注点。

但是最近我在 backbone 中阅读了有关 delegateEvents 的内容,并且对我的实现方式有着复杂的感觉。到目前为止,我在 initialize 方法中调用了 render() 方法。

我没有进行详尽的测试,也没有找到我可能会遇到问题的用例。然而,它让我感觉潜在的问题潜伏在我的工作方式中。

能否分享一下您的经验?在initialize中调用render()方法有什么问题?你会怎么做?

parent 是否在指示 child 在哪里以及何时呈现自己?它是否仍在 SoC(关注点分离)的边界内?

最佳答案

基本上我看到大约 3 种不同的渲染场景,前 2 种是父级渲染,

// parent view's render
render: function() {
var child = new ChildView({el: this.$('.foo'), model: bar, ...});
this.$el.append(child.render().el);
}

这基本上是父级指示渲染子级的位置或时间以及内部渲染的情况,

// parent view's render
render: function() {
var child = new ChildView({el: this.$('.foo'), model: bar, ...});
this.$el.append(child.el);
}

// child view's initialize
initialize: function() {
...
this.render();
}

这是 subview 指示渲染何时完成的情况。我的意见是后者更好。您的应用程序应该这样安排,以便只有 View 本身知道何时应该呈现(应该在初始化或获取模型/集合之后)。我没有看到在 initialize 中调用 render 有任何问题,即使在它之后调用了 delegateEvents。填充 el 不应对其功能产生任何影响。

initialize 中调用 render 是一个很好的做法,因为它在任何情况下都有效,并且统一了渲染方式(您将添加在获取后渲染的 View 与其他 View 相同)。以这种方式进行渲染我还没有遇到任何问题,显然你也没有遇到过!

希望这对您有所帮助(或有助于让您放心)!

关于javascript - 在主干 View 中调用 render() 方法的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12263268/

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