Position Absolute

使用backbone.js中的请求方法在virce上修改URL

骨干 为您的模型提供了所有类型的请求的默认URL。但是,如果您希望能够更改与API同步的URL模型,那么何时何于请求类型?那就是我们在这里做的事情。

骨干同步

同步是备用备用备用实用程序,当您请求您的服务器同步您的模型时。每次您请求更改,骨干通话同步,对于您而言,它基本上是一个空的shell,用于在启动请求之前进行操作。

我们将在这里做的是创建3个URL,取决于我们编辑,创建或删除模型。为此,我们将添加一个新函数,其中包含句柄3新URL的模型定义:

methodUrl:  function(method){
	if(method == "delete"){
    		return "http://www.api.com/mymodel/" + this.attributes.id+"/delete";
    	}else if(method == "update"){
                return "http://www.api.com/mymodel/" + this.attributes.id+"/update";
        }else if(method == "create"){
                return "http://www.api.com/mymodel/create";
        } 
    	return false;
}

那很好,但从这些方法来到哪里?好吧,他们来自骨干,骨干告诉你同步发生了哪种类型的动作,以便到那最后我们必须修改同步:

sync = function(method, model, options) {
    if (model.methodUrl && model.methodUrl(method.toLowerCase())) {
      	options = options || {};
      	options.url = model.methodUrl(method.toLowerCase());
    }
   Backbone.sync(method, model, options);
}

同步真的很好,它为您提供了很多信息,在这里我们检查我们的方法函数是否返回URL并覆盖我们当前的信息,如果它没有?好吧,它只需允许默认的URL并继续正常。

全球使用Sync.

您可以单独定义每个模型的同步方法,但这将是一个痛苦,而是一个很好的想法是将其应用于修改骨干模型原型的每个模型:

    Backbone.Model.prototype.sync = function(method, model, options) {
    	if (model.methodUrl && model.methodUrl(method.toLowerCase())) {
      		options = options || {};
      		options.url = model.methodUrl(method.toLowerCase());
    	}
   		Backbone.sync(method, model, options);
  	}

你去了!