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 Backbone.js子视图渲染_Javascript_Backbone.js - Fatal编程技术网

Javascript Backbone.js子视图渲染

Javascript Backbone.js子视图渲染,javascript,backbone.js,Javascript,Backbone.js,我正在努力掌握Backbone.js,并一直遵循本文概述的“模块化”方法 在尝试将一个视图“包含”到另一个视图中时,我似乎被卡住了,如下所示: 设置视图.js define([ 'jquery', 'underscore', 'backbone', 'text!templates/settings/settingsTemplate.html' ], function($, _, Backbone, settingsTemplate){ var SettingsView

我正在努力掌握Backbone.js,并一直遵循本文概述的“模块化”方法

在尝试将一个视图“包含”到另一个视图中时,我似乎被卡住了,如下所示:

设置视图.js

define([
  'jquery',
  'underscore',
  'backbone',
  'text!templates/settings/settingsTemplate.html'
], function($, _, Backbone, settingsTemplate){   

  var SettingsView = Backbone.View.extend({
    el: $("#interface"),

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

  });

  return SettingsView;

});
define([
    'jquery', 
    'underscore', 
    'backbone',
    'views/settings/SettingsView',
    'models/script/ScriptModel', 
    'collections/scripts/ScriptsCollection',
    'text!templates/script/scriptTemplate.html'
],    
    function($, _, Backbone, SettingsView, ScriptModel, ScriptsCollection,  scriptTemplate) {

    var ScriptView = Backbone.View.extend({
        el : $("#container"),

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

            //add the settings view
            var settingsView = new SettingsView();
            settingsView.render();
        }
    });

    return ScriptView;
});
ScriptView.js

define([
  'jquery',
  'underscore',
  'backbone',
  'text!templates/settings/settingsTemplate.html'
], function($, _, Backbone, settingsTemplate){   

  var SettingsView = Backbone.View.extend({
    el: $("#interface"),

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

  });

  return SettingsView;

});
define([
    'jquery', 
    'underscore', 
    'backbone',
    'views/settings/SettingsView',
    'models/script/ScriptModel', 
    'collections/scripts/ScriptsCollection',
    'text!templates/script/scriptTemplate.html'
],    
    function($, _, Backbone, SettingsView, ScriptModel, ScriptsCollection,  scriptTemplate) {

    var ScriptView = Backbone.View.extend({
        el : $("#container"),

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

            //add the settings view
            var settingsView = new SettingsView();
            settingsView.render();
        }
    });

    return ScriptView;
});
更新:我已经设法修复了错误,我刚刚意识到这是为什么发生的(参数顺序错误-DOH!!)

我不再收到错误,但我的“设置视图”仍然没有出现。当我在“ScriptView.js”中记录这个时,我看到“el”是未定义的,所以我的想法是,这就是问题所在


谢谢

我认为您必须将
设置视图
附加到
脚本视图的
el

var ScriptView = Backbone.View.extend({
    el : $("#container"),

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

        //add the settings view
        var settingsView = new SettingsView();
        settingsView.render();

        this.$el.append(settingsView.el);
    }
});
一篇关于子视图的好文章是


我希望有帮助

我认为您必须将
设置视图
附加到
脚本视图的
el

var ScriptView = Backbone.View.extend({
    el : $("#container"),

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

        //add the settings view
        var settingsView = new SettingsView();
        settingsView.render();

        this.$el.append(settingsView.el);
    }
});
一篇关于子视图的好文章是


我希望有帮助

作为一名服务器端js新手,恐怕我帮不了什么忙,无论如何,在scriptview.js中,“名称空间”中的名称顺序似乎与函数参数的顺序不匹配。(可能是“没有方法”的原因)。看起来人们通常会返回视图本身作为renderAlso的结果(仍然是一个新手问题),这是什么?是不是应该是
this.el
$(this.el)
?谢谢jbl-是的,我刚刚意识到我自己,因此更新了帖子;)。我现在已经让它工作了(我想?)-至少我现在可以在页面上看到我的子视图,所以我猜它是可以的。除了您提到的明显错误之外,我还将“SettingsView.js”中的render方法更改为:var compiledTemplate=uuz.template(settingsTemplate)$(“#接口”).append(compiledTemplate);这似乎成功了!作为一名服务器端js新手,恐怕我帮不了什么忙,无论如何,在scriptview.js中,“名称空间”中的名称顺序似乎与函数参数的顺序不匹配。(可能是“没有方法”的原因)。看起来人们通常会返回视图本身作为renderAlso的结果(仍然是一个新手问题),这是什么?是不是应该是
this.el
$(this.el)
?谢谢jbl-是的,我刚刚意识到我自己,因此更新了帖子;)。我现在已经让它工作了(我想?)-至少我现在可以在页面上看到我的子视图,所以我猜它是可以的。除了您提到的明显错误之外,我还将“SettingsView.js”中的render方法更改为:var compiledTemplate=uuz.template(settingsTemplate)$(“#接口”).append(compiledTemplate);这似乎成功了!