gpt4 book ai didi

javascript - Backbone.js - 向页面呈现一个新元素

转载 作者:行者123 更新时间:2023-11-30 00:19:06 28 4
gpt4 key购买 nike

假设您在 View 中创建了一个新元素 - 即您没有使用 el 定位页面上的现有元素。

var StudentView = Backbone.View.extend({
tagName: 'article',
className: 'student-name',
template: _.template($('#name-tpl').html()),

render: function(){
var student_tpl = this.template({name: 'Rikard'});
this.$el.html(student_tpl);
}
});

然后实例化 View 并调用其渲染方法:

var student_view = new StudentView();
student_view.render();

您的 HTML 包含以下模板:

<div class="target">
<script id="name-tpl" type="text/template">
<%= name %>
</script>
</div>

这不会将新创建的元素打印到页面上。如果我们将 el 设置为 .target,那么它会工作,但它不会打印您在 View 中设置的标签名称或类名称。

有什么方法可以将您新创建的元素打印到页面上吗?我考虑过使用 jQuery append,但似乎应该有一个更面向主干的解决方案。

最佳答案

除非您使用 el 将 View 附加到 DOM 中现有元素的选项,创建一个 HTMLElement在内存中,与 DOM 分离.将它附加到你想要的位置是你的责任(backbone 为你创建一个新元素,但它不知道你希望它添加到 DOM 中的什么位置)。

如果您已经有一个 Backbone.View并且你想将它设置为不同的元素,你可以使用 setElement , 但在这种情况下,您也有责任确保该元素是 DOM 的一部分。 .


如果 backbone 给你一种方法来指定元素在 DOM 中的位置,那看起来像这样:

{
tagName: 'article',
elPosition: '#container > .content+div:nth-child(3)'
}

又会出现元素是否应该加在elPosition之前的困惑,或之后等。这看起来很难看,难怪为什么 backbone 将它留给你而不是设置更多规则。在我看来,与其他框架相比,backbone 设置的规则更少,并且给你更多的自由(当你不知道如何使用它时,自由可能是一种痛苦:)


我们通常做的是,有主 parent view指向 DOM 中的包含元素,如 <body> , 使用 el选项。

然后将 subview 附加到它,如 this.$el.appendTo(parentView.$el);

关于javascript - Backbone.js - 向页面呈现一个新元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33839088/

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