backbone.js – 错误:必须指定一个url属性或函数

这些是我在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();

但是你没有给你的模型一个url属性

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生成,并且您没有覆盖url,所以urlError()被调用,这是您的错误消息来自哪里.

您的usermodel需要RESTful URL属性函数,以便您可以从服务器获取实例.或者,您可以从客户端环境中已经可用的数据创建模型(只要您不打算通过主干节点保存任何内容).

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...