这些是我在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); } });
解决方法
你正在调用你的模型抓取:
var UserView = Backbone.View.extend({ model: usermodel,initialize: function() { // ... this.model.fetch();
var usermodel = Backbone.Model.extend({});
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生成,并且您没有覆盖url,所以urlError()被调用,这是您的错误消息来自哪里.
您的usermodel需要RESTful URL属性或函数,以便您可以从服务器获取实例.或者,您可以从客户端环境中已经可用的数据创建模型(只要您不打算通过主干节点保存任何内容).
原文地址:https://www.jb51.cc/js/152117.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。