0

我已经为此苦苦挣扎了一段时间,并认为我会屈服并在这里询问,而不是继续将头撞在桌子上。这是非常基本的东西,我只是从骨干开始。为什么我不能通过 .get() 函数访问人?

我正在为我的 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

你有两个问题。

返回单个对象而不是数组。

$.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 端点来获取集合/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 回答