Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我要把$el锁起来_Javascript_Backbone.js - Fatal编程技术网

Javascript 为什么我要把$el锁起来

Javascript 为什么我要把$el锁起来,javascript,backbone.js,Javascript,Backbone.js,目前我正在深入研究Backbone.js,我想知道为什么我在创建我的列表项视图的新实例时必须链接$el(在render()之后) // autoCompleteView.js /** * Create a new instance of {listItem} and * append it to result list. * * @param item * @see listItem * @private *

目前我正在深入研究Backbone.js,我想知道为什么我在创建我的
列表项视图的新实例时必须链接
$el
(在render()之后)

    // autoCompleteView.js

    /**
     * Create a new instance of {listItem} and
     * append it to result list.
     *
     * @param item
     * @see listItem
     * @private
     */
    _addResultListItem: function (item) {

        this.$el.append(
            new this.listItem({
                model: item,
                parent: this
            }).render().$el
        );

    }
更新: 渲染方法 项目视图 log(新的this.listItem({model:item,parent:this}).render());
el
$el
(jQuery-wrapped-el)是视图表示的DOM元素

渲染时,将输出插入/附加到这些元素

经常使用的
视图。$el.append(otherView.render().$el)
源于约定(在许多示例中使用),即render在包含所需内容之前返回视图本身以及需要渲染的视图


无需将其链接,您也可以将其分成两条语句
otherView.render()
view.$el.append(otherView.el)
el
$el
(jQuery-wrapped-el)是视图表示的DOM元素

渲染时,将输出插入/附加到这些元素

经常使用的
视图。$el.append(otherView.render().$el)
源于约定(在许多示例中使用),即render在包含所需内容之前返回视图本身以及需要渲染的视图


无需将其链接,您也可以将其分为两条语句
otherView.render()
view.$el.append(otherView.$el)

链接
$el
,这样做没有太大意义(它只是引用jQuery对象)。你的渲染功能是什么样子的?@m90查看我更新的问题。也许这是我嵌套视图的问题?!谢谢你的努力!我创建了日志窗口的屏幕截图。它似乎返回了模型..好的,我明白了,现在发生的是
$el
引用了视图的jQuery包装版本(通过调用
render()
返回)。因此,为了使用
append()
,您需要指定视图的
el
$el
.Hrmmm,这听起来很明显。请添加您的评论作为答案,以便我可以接受!非常感谢。像这样链接
$el
并没有太大意义(它只是指一个jQuery对象)。你的渲染功能是什么样子的?@m90查看我更新的问题。也许这是我嵌套视图的问题?!谢谢你的努力!我创建了日志窗口的屏幕截图。它似乎返回了模型..好的,我明白了,现在发生的是
$el
引用了视图的jQuery包装版本(通过调用
render()
返回)。因此,为了使用
append()
,您需要指定视图的
el
$el
.Hrmmm,这听起来很明显。请添加您的评论作为答案,以便我可以接受!非常感谢。
    // autoCompleteView.js

    render: function () {

        // bind events
        this.input
            .keyup(this.keyup.bind(this))
            .keydown(this.keydown.bind(this))
            .after(this.$el);

        return this;
    }
// autoCompleteItemView.js

var AutoCompleteItemView = Backbone.View.extend({

    tagName: "li",

    events: {
        "click": "select"
    },

    render: function () {
        this.$el.append( Mustache.to_html( Template, this.model.toJSON() ) );
        return this;
    },

    select: function () {
        this.options.parent.hide().select(this.model);
        return false;
    }

});

return AutoCompleteItemView;