【问题标题】:Backbone view instantiation TypeError主干视图实例化 TypeError
【发布时间】:2023-04-03 10:50:02
【问题描述】:

我是 Backbone 的新手,我正在尝试使用 Underscore 的模板渲染一个基本视图。这是javascript:

TestView = Backbone.View.extend({
   initialize: function() {
      this.render();
   },
   render: function() {
      var template = _.template( $('#template').html(), {} );
      this.el.html( template );
   }
});

var test_view = new TestView( { el: $('#container') } );

这是我在 Chrome 中遇到的错误:

Uncaught TypeError: Expecting a function in instanceof check, but got [object Object]

它在第 1203 行(开发版)从 Backbone 抛出错误。您可以在my website 看到正在发生的错误。

我在这里做错了什么?我应该省略 render() 函数吗?

【问题讨论】:

    标签: javascript jquery backbone.js underscore.js backbone-views


    【解决方案1】:

    改变加载顺序,即jQuery优先:

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
    <script src="http://documentcloud.github.com/underscore/underscore.js"></script>
    <script src="http://backbonejs.org/backbone.js"></script>
    

    【讨论】:

    • 你是男人中的神。可悲的是,我现在遇到了一个新错误。在我的渲染函数中,我试图通过 html() 函数将编译后的模板应用于视图的 el 变量,但它告诉我 el 没有这样的函数。有什么想法吗?
    • 如果你调试它,你会看到this.el 是一个纯 HTML 元素,它没有.html(),但只有.innerHTML 以防万一。您想要/必须做的是将其包装为像 $(this.el) 这样的 jQuery 对象,然后 $(this.el).html(template) 应该可以正常工作
    • 你太棒了Juri。非常感谢。作为最后的告别,你碰巧有任何关于调试 javascript 的资源或文章吗?再次感谢你,你是一个救生员。
    • 我通常使用 Chrome Dev 工具,其他的如 Firebug,这是一个品味问题。对于 Chrome 开发工具,我建议你看看他们的官方网站:developers.google.com/chrome-developer-tools 有几个有趣的视频和教程。 Paul Irish 有一些 nice vids as well
    • 使用最新版本的 Backbone,您可以使用 this.$el 而不是 $(this.el),无需创建 Backbone 已有的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多