0

私はしばらくこれに苦労してきましたが、机に頭をぶつけ続けるのではなく、諦めてここで質問しようと思いました. これはかなり基本的なものです。バックボーンから始めたばかりです。.get() 関数を介して person にアクセスできないのはなぜですか?

私はajax コードにMockjaxを使用しています。これは次のようになります。

$.mockjax({
    url: '/data',
    contentType: 'text/json',
    responseTime: 150,
    type: 'GET',
    responseText: '[{ "name": "Chance, Churc", "id_number": "", "w_time": null, "o_time": null }]'
});

およびバックボーン部分:

var PWItem = Backbone.Model.extend({});
var person = new PWItem();
person.fetch({
    url: '/data',
    success: function() {
        console.log(person.attributes[0].name);  //this prints the correct attribute
    }
}):

console.log(person);  //prints the person object
console.log(person.get('name'));  //prints 'undefined'

バックボーン正午の助けをいただければ幸いです。

4

3 に答える 3

2

2 つの問題があります。

配列ではなく単一のオブジェクトを返します。

$.mockjax({
    url: '/data',
    contentType: 'text/json',
    responseTime: 150,
    type: 'GET',
    // you are fetching a single model, so JSON should not be an array
    responseText: '{ "name": "Chance, Churc", "id_number": "", "w_time": null, "o_time": null }'
});

属性にアクセスするには、フェッチが完了するまで待ちます。

var PWItem = Backbone.Model.extend({});
var person = new PWItem();
person.fetch({
    url: '/data',
    success: function() {
       // this will only work after success
       console.log(person.get('name')); // should print "Chance, Churc"
    }
}):

person.on('change:name', function(){
    console.log(person.get('name')); // should print "Chance, Churc"
});

console.log(person);  //prints the person object
// fetch is not done yet, 'undefined' is expected.
console.log(person.get('name'));  //prints 'undefined' 
于 2013-03-06T21:37:35.263 に答える
0

このように試しましたか?

$.mockjax({
    url: '/data/1',
    contentType: 'text/json',
    responseTime: 150,
    type: 'GET',
    responseText: '{ "name": "Chance, Churc", "id_number": "", "w_time": null, "o_time":     null }'
});


var PWItem = Backbone.Model.extend({});
var person = new PWItem({url: '/data', id: 1});
person.fetch();
console.log(person.get('name'));
于 2013-03-06T21:25:28.810 に答える
0

あなたが書いたモック ajax は、データのコレクションを取得するためのものです。[]. url end point を押すと、コレクションを取得できます/data。コレクションを定義して、以下のように使用できます。

 var PWItemColl = Backbone.Collection.extend({
    model: PWItem
    url: '/data'
    });

    var persons = new PWItemColl();
    persons.fetch ({
      success: function() {
       console.log(persons.at(0).get('name')); // "Chance, Churc"
      }
    });
于 2013-03-07T04:44:01.277 に答える