0

非常に単純なBackboneアプリの例を実行していますが、JSエラーメッセージが表示され続けます。私は基本的に2つのファイルを持っています:

  1. app.js

このファイルはBackbone.jsアプリを作成し、コレクションビューのデータを使用してテンプレートからhtmlファイルに作成済みのdivにスパンを追加します。

    /*Backbone.js Appointments App*/

    App = (function($){
      //Create Appointment Model
      var Appointment = Backbone.Model.extend({});

      //Create Appointments Collection
      var Appointments = Backbone.Collection.extend({
        model: Appointment
      });

      //Instantiate Appointments Collection
      var appointmentList = new Appointments();
      appointmentList.reset(
        [{startDate: '2013-01-11', title: 'First Appointment', description: 'None', id: 1},
         {startDate: '2013-02-21', title: 'Second Appointment', description: 'None', id: 2},
         {startDate: '2013-02-26', title: 'Third Appointment', description: 'None', id: 3}
        ]
      );

      //Create Appointment View
      var AppointmentView = Backbone.View.extend({
        template: _.template(
          '<span class="appointment" title="<%= description %>">' +
          ' <span class="title"><%= title %></span>' +
          ' <span class="delete">X</span>' +
          '</span>'
        ),

        initialize: function(options) {
          this.container = $('#container');
        },

        render: function() {
          $(this.el).html(this.template(this.model));
          this.container.append(this.el);
          return this;
        }
      });

      var self = {};
      self.start = function(){
        new AppointmentView({collection: appointmentList}).render();
      };
      return self;
    });

    $(function(){
      new App(jQuery).start();
    });
  1. index.html

このファイルは、jquery、バックボーン、その他のjsライブラリを呼び出すだけで、前のファイルのBackbone.jsアプリがデータを追加するdivコンテナも作成しました。

    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="utf-8">
      <title>hello-backbonejs</title>
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
      <script src="http://ajax.cdnjs.com/ajax/libs/json2/20110223/json2.js"></script>
      <script src="http://ajax.cdnjs.com/ajax/libs/underscore.js/1.1.6/underscore-min.js"></script>
      <script src="http://ajax.cdnjs.com/ajax/libs/backbone.js/0.3.3/backbone-min.js"></script>
      <script src="app.js" type="text/javascript"></script>
    </head>
    <body>
    <div id="container"></div>
    </body>
    </html>

私が得るエラーは次のとおりです。

Uncaught TypeError: Object [object Object] has no method 'reset' app.js:14
App app.js:14
(anonymous function) app.js:49
e.resolveWith jquery.min.js:16
e.extend.ready jquery.min.js:16
c.addEventListener.z jquery.min.js:16
4

1 に答える 1

2

Backbone 0.3.3 を使用していますがCollection.reset、Backbone 0.5 で導入されました。詳細については、変更ログを参照してください。

Backbone (現時点では 0.9.9) をアップグレードするか (および、その間に Underscore と jQuery をアップグレードします)、またはCollection#refreshBackbone 0.3.3 を絶対に維持する必要がある場合は使用します (ただし、将来的に他のエラーが発生する可能性があります)。

于 2013-01-11T11:27:39.847 に答える