Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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 主干视图未选择元素_Javascript_Jquery_Backbone.js_Backbone Views - Fatal编程技术网

Javascript 主干视图未选择元素

Javascript 主干视图未选择元素,javascript,jquery,backbone.js,backbone-views,Javascript,Jquery,Backbone.js,Backbone Views,这是我第一次使用主干创建视图,但我无法呈现对文档中现有元素的更改 var ParamsView = Backbone.View.extend({ el: $('#node-parameters'), initialize: function() { console.log('WOW'); }, render: function() { console.log('doing it'); console.log(t

这是我第一次使用主干创建视图,但我无法呈现对文档中现有元素的更改

var ParamsView = Backbone.View.extend({

    el: $('#node-parameters'),

    initialize: function() {
        console.log('WOW');
    },

    render: function() {
        console.log('doing it');
        console.log(this.$el.length);
        console.log($('#node-parameters').length);
        this.$el.append('<span>hello world!</span>');
        return this;
    }

});

    var v = new ParamsView();
    v->render();
因此我知道我的jQuery选择器
$(“#节点参数”)
正在查找1个DOM元素,但视图没有使用它

知道我做错了什么吗


编辑:在JS调试器中,我可以看到
this.el
对于视图是未定义的。

您的代码可能与此等效:

var ParamsView = Backbone.View.extend({
    el: $('#node-parameters'),

    initialize: function() {
        console.log('WOW');
    },

    render: function() {
        console.log('doing it');
        console.log(this.$el.length);
        console.log($('#node-parameters').length);
        this.$el.append('<span>hello world!</span>');
        return this;
    }
});

$(document).ready(function() {
    var v = new ParamsView();
    v.render();
});

el
然后在DOM就绪事件之后实例化类时进行计算

你能试试
var v=newparamsview({el:'#node parameters'})吗?@nikoshr,这很有效!我想知道为什么?几分钟后会有解释:)如果我把el改成一个字符串,而不是一个jQuery选择器,我的代码现在就可以工作了。@MathewFoscarini el应该是一个HTML元素,$el包含jQuery元素(但是,我想如果你使用
new ParamsView({el:'$(#node parameters'));
它会工作,因为构造函数会将其更改为HTML元素)。实际上,我的代码是在document.ready之后通过AJAX请求执行的$(“#节点参数”)。在调用
new ParamsView()
之前,长度将为1。不过,使用字符串解决了这个问题。
var ParamsView = Backbone.View.extend({
    el: $('#node-parameters'),

    initialize: function() {
        console.log('WOW');
    },

    render: function() {
        console.log('doing it');
        console.log(this.$el.length);
        console.log($('#node-parameters').length);
        this.$el.append('<span>hello world!</span>');
        return this;
    }
});

$(document).ready(function() {
    var v = new ParamsView();
    v.render();
});
var ParamsView = Backbone.View.extend({
    el: '#node-parameters'
});