gpt4 book ai didi

backbone.js - 错误 : a url property or function must be specified

转载 作者:行者123 更新时间:2023-12-04 02:56:39 31 4
gpt4 key购买 nike

这是我在 BackBone.js 上工作的最初几天。我实际上被路由器部分卡住了,因为我在控制台中收到错误“错误:必须指定 url 属性或函数”。这是我的场景;我有一个动态形成 REST URL 的点击函数,并相应地从服务器获取数据。

这是点击功能代码

function onUserClick(obj){
var userID=$(obj).attr('id');
window.location.href="#"+userID+"/";
var userRouter = new UserRouter;
}

我在路由器中有以下代码
var userModel;
var UserRouter = Backbone.Router.extend({
routes:{
":userid/":"getUsers"
},
getUsers:function(userid){
var url="http://myserver.com/users/"+userid;
userModel = new UserModel({urlRoot:url});
var userView = new UserView({el:$(#"container")});
}
});
var UserModel = Backbobe.Model.extend({});
var UserView = Backbone.View.extend({
model:userModel,
initialize:function(){
_.templateSettings = {
interpolate: /\{\{\=(.+?)\}\}/g,
evaluate: /\{\{(.+?)\}\}/g
};
this.model.fetch();
this.model.bind("change",this.render,this);
},
render:function(){
var data=this.model.toJSON();
var userTemplate=_.template($("#userTemplate").text());
var htmlData=userTemplate({
"userData":data
});
$(this.el).html(htmlData);
}
});

有人可以帮我解决这里的问题吗?我知道我在这里做错了什么,并就此寻求专家建议。非常感谢这种情况下的工作示例。

最佳答案

您调用fetch在您的模型上:

var UserView = Backbone.View.extend({
model: userModel,
initialize: function() {
// ...
this.model.fetch();

但是你没有给你的模型一个 url属性(property):
var UserModel = Backbone.Model.extend({});

fetch 方法与服务器对话,它使用 url这样做:

url model.url()

Returns the relative URL where the model's resource would be located on the server. If your models are located somewhere else, override this method with the correct logic. Generates URLs of the form: "/[collection.url]/[id]", falling back to "/[urlRoot]/id" if the model is not part of a collection.



default implementation for a Model's url 看起来像这样:
url: function() {
var base = _.result(this, 'urlRoot') || _.result(this.collection, 'url') || urlError();
if (this.isNew()) return base;
return base + (base.charAt(base.length - 1) === '/' ? '' : '/') + encodeURIComponent(this.id);
},

您没有 urlRoot ,您没有将 URL 生成委托(delegate)给的集合,并且您没有覆盖 url所以 urlError()被调用,这就是您的错误消息的来源。

您的 UserModel需要一个 RESTful url属性或函数,以便您可以 fetch来自服务器的实例。或者,您可以从客户端环境中已经可用的数据创建模型(当然,只要您不打算通过 Backbone 保存任何内容)。

关于backbone.js - 错误 : a url property or function must be specified,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10076793/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com