我的前端是主干,前端是菲尔·斯特金的REST控制器的编码点火器。
我有一个模型:Publisher和一个集合:Publisher
App.Collections.Publishers = Backbone.Collection.extend({
model: App.Models.Publisher,
url: '/restpublisher'
});
我的RestPublisher控制器具有:
function index_post(){
$this->response('in pulisher_post');
}
function index_delete(){
$this->response('in pulisher_delete');
}
function index_put(){
$this->response('in pulisher_put');
}
问题是在这个问题上。模型save();激发的url是:http://pubhub.local/restpublisher/1111其中1111是id。
问题是我得到了404。如果我只是模拟一个put请求http://pubhub.local/restpublisher/一切都很好,我想我可以按要求得到参数-
有没有办法解决这个问题?
问题2:有人能解释一下为什么行动的名称应该以索引开头吗?为什么我不能写一个动作:发布者发布一篇文章,在保存收藏时会得到数据?
非常感谢!罗伊
我将从第二个问题开始:我想它只是更容易解析,而且它只是一个样板,所以为什么不索引呢?
现在,继续有趣的部分。如果您在集合中使用模型,骨干作为默认行为,将使用集合的URL为您的模型(collection.url/model.id)构建默认行为。但是,您可以通过为模型的URL设置一个值来重写它:url:'/restPublisher'
。
来源
编辑:
为了让您大致了解其工作原理,可以更容易地引用主干网的模型#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);
}
所以基本上,如果您重写模型中的url
属性,这个函数将被删除,您不希望的行为也将被删除。