访问backbone.js中的模型ID

时间:2013-07-05 09:32:08

标签: javascript backbone.js

我正在构建我的第一个Backbone应用程序,我对如何将ID传递给模型感到困惑。当我实例化模型时,我会传递ID var user = new UserModel(id);。那时,id == 1initialize中的值仍然相同  模型中的方法。当我在url属性中使用该变量时,它是未定义的。那是为什么?

// Filename: models/user/UserModel.js

define([
    'underscore',
    'backbone'
], function(_, Backbone) {

    var UserModel = Backbone.Model.extend({
        initialize: function(id) {
            console.log('modelID: ' + id); // Prints 'modelID: 1'
            this.set({'id': id});
        },
        // Sends GET request to http://[domain]/users/view/undefined
        url: 'users/view/' + this.id
    });

    return UserModel;

});

3 个答案:

答案 0 :(得分:1)

这个有效:

var UserModel = Backbone.Model.extend({
        initialize: function(id) {
            console.log('modelID: ' + id); // Prints 'modelID: 1'
            this.set({'id': id});
       },
    // Sends GET request to http://[domain]/users/view/undefined
    url: function(){
        return "/users/view/"+this.get("id");
    }
   });
console.log(new UserModel("10").url())

http://jsfiddle.net/wyA9Q/2/

答案 1 :(得分:1)

  • A Backbone model需要一个表示属性的对象作为其构造函数的第一个参数

      

    构造函数/初始化新模型([attributes],[options])
      创建模型实例时,可以传入属性的初始值,这些值将在模型上设置。如果定义初始化函数,则在创建模型时将调用它。

  • 设置model.urlRoot有助于构建您的网址

      

    urlRoot model.urlRoot或model.urlRoot()
      如果你是,请指定urlRoot   使用集合外部的模型来启用默认URL   用于根据模型ID生成URL。 “[urlRoot] / ID”

  • 应通过model.get

  • 访问属性

因此您可以将模型定义为

var UserModel = Backbone.Model.extend({
    urlRoot: '/users/view'
});

并将其实例化为var user = new UserModel({id: id});

答案 2 :(得分:0)

var userModel = new UserModel({id: 10});
userModel.fetch();

它应该工作:)