Backbone.js model.get()不起作用

时间:2014-02-07 12:02:27

标签: backbone.js

在下面的代码中,当我想使用get()方法时,如代码中所示返回undefined。有什么问题。

<script type="text/javascript">
(function() {
    window.App = {
        Models: {},
        Views: {}
    };
    window.vent = _.extend({}, Backbone.Events);
})();

//Model
App.Models.User = Backbone.Model.extend({
    url: '/users'
});

var user = new App.Models.User();
user.fetch({
    success: function (user) {
        console.log(user.get('firstname'));
    }
});
</script>

2 个答案:

答案 0 :(得分:1)

这是因为success回调的值不是Backbone模型,它是原始服务器响应的原因。要在获取数据后立即显示名字,您可以使用延迟(请参阅http://api.jquery.com/jQuery.Deferred/):

var user = new App.Models.User();
$.when(user.fetch()).done(function(){
  console.log(user.get("firstname");
});

答案 1 :(得分:0)

您的示例在我这里工作的是http://jsfiddle.net/YYM43/

尝试查看是否正确加载了libs(Backbone.js ...)。

(function() {
    window.App = {
        Models: {},
        Views: {}
    };
    window.vent = _.extend({}, Backbone.Events);
})();

//Model
App.Models.User = Backbone.Model.extend({
    url: 'http://echo.jsontest.com/name/betty/age/22'
});

var user = new App.Models.User();
user.fetch({
    success: function (user) {
        console.log(user.get('age'));
    }
});