0

Rails バックエンドを使用する Backbone アプリの app.js ファイルで、コレクションを開始し、fetch() メソッドがレコードの取得を完了した後で、それを jobForm ビューのコレクションとして設定しました。

var app = {

  init: function () {

 this.collections.job  = new this.Collections.job();
 this.collections.job.fetch().complete(function(){
      app.views.jobForm = new app.Views.jobForm({ collection : app.collections.job });

}

jobForm ビュー (ユーザーがジョブの詳細を入力するためのビュー) 内で、フォームの送信をリッスンし、コレクションを使用してフォームの送信時に新しいジョブを作成します。

events : {
            'submit form' : 'addDoc'
        },
        addDoc : function(e) {

            e.preventDefault();
            // app.collections.job.create({
            console.log(this.collection);
            this.collection.create({

                job_title : this.$('.job_title').val(),
                position : this.$('.position').val(), 
                company : this.$('.company').val(),

            }, { error : _.bind(this.error, this) });

ただし、エラーが発生します

Uncaught TypeError: Object [object Object] has no method 'create' 

このコードは、 create メソッドを持っているとは考えていないため、ネットワーク リクエストを作成しようとさえしていません。コレクションを作成する前にコレクションのコンソール ログを作成すると、ジョブのコレクション (アプリにバックボーンを追加する前に作成されたもの) が返されるので、これはコレクションです。

child {cid: "c1", attributes: Object, _changing: false, _previousAttributes: Object, changed: Object…}
_changing: false
_pending: false
_previousAttributes: Object
attributes: Object
changed: Object
cid: "c1"
__proto__: Surrogate
constructor: function (){ return parent.apply(this, arguments); }
initialize: function () {
model: function (){ return parent.apply(this, arguments); }
url: "/jobs"
__proto__: Object

コンソールで、fetch と呼ばれる新しいコレクションをインスタンス化し、いくつかの結果を取得し、collection.at(0) などの他のコレクション メソッドをいくつか試しましたが、オブジェクトにメソッド「at」がないと言われました。 .

不思議なことに、このコード (コレクションにリンクされたフォーム) は、私の別の動作中の Backbone アプリからコピーしたコードです。

したがって、fetch(); を呼び出すことができれば、このオブジェクトをインスタンス化した後、ただし、他のバックボーン コレクション メソッド (「at」や「create」など) を呼び出さないでください。create を呼び出そうとしているこのオブジェクトは何ですか?また、問題を解決するにはどうすればよいでしょうか.. .

4

1 に答える 1

0

問題は、モデルを拡張していたことでした

app.Collections.job = Backbone.Model.extend({

コレクションというより

app.Collections.job = Backbone.Collection.extend({
于 2013-03-31T04:43:28.260 に答える