我正在构建我的第一个Backbone应用程序,我对如何将ID传递给模型感到困惑。当我实例化模型时,我会传递ID var user = new UserModel(id);
。那时,id == 1
。 initialize
中的值仍然相同
模型中的方法。当我在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;
});
答案 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())
答案 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();
它应该工作:)