使用Backbone.View时,返回“parent.apply不是函数”错误

时间:2011-04-22 22:26:06

标签: backbone.js

考虑这个标记

<div id="controls" class="controls">
  <a href="#">Home</a> - 
  <a href="#/get">get</a> - 
  <a href="#/new">new</a>
  <input type="text" val="" id="input">
</div>

这篇javascript:

$(document).ready(function() {
  "use strict";

  // this is used on my code as root.App,
  // but the code was omitted here for clarity purposes
  var root = this,
  undefined;

  var controller = Backbone.Controller.extend({

    routes : {
      // static
    },
  });

  var view = new Backbone.View.extend({
    el : $('#controls'),
    events : {
      'click a' : 'updateOnEnter'
    },

    updateOnEnter : function(el) {
      alert('sss');
      return this;
    },

    initialize : function() {
      _.bindAll(this, 'render', 'updateOnEnter');
    },

    render : function() {
       return this;
    }
  });

  new view;
  new controller;
  Backbone.history.start();
)};

调用view时(使用new view),Firebug会触发此错误:

parent.apply is not a function
error backbone.js (line 1043): child = function(){ return parent.apply(this, arguments); }; 

为什么会发生这种情况的任何想法?感谢。

1 个答案:

答案 0 :(得分:88)

没关系。

问题出在上面js代码的第16行:

var view = new Backbone.View.extend({

应该而不是:

var view = Backbone.View.extend({

我没有删除这个问题,因为有人可能觉得它很有用。我猜想不是来自CS背景的陷阱。