我想知道人们通常如何使用backbone.js进行错误处理.每次调用model.save(后者调用Backbone.sync)时弹出一些东西会很不错.问题是,backbone.js如何知道服务器上何时出现错误或成功?我知道它会知道是否有500个服务器错误或类似的东西(由于Backbone.sync调用jQuery.ajax,jquery知道) - 但我希望能够传递消息和其他代码以便我可以提供更有意义的错误给用户的消息.
我有一个想法,并希望得到一些反馈.我们的想法是覆盖Backbone.sync.新同步从服务器获得响应,该响应必须采用特定格式.这种格式是这样的:
ServerResponseObject:
> ResponseCode
> Message
> Model
Run Code Online (Sandbox Code Playgroud)
没什么好看的,但基本上,它不是只返回普通模型,而是用一个包裹起来,ResponseCode并且Message可以向用户显示.
这是正常的做法吗?还有其他方法更好吗?
谢谢!
我有一个类别的层次结构.我使用jquery库来构建层次结构,以便按照用户想要的方式混淆.然后他们点击保存.因此,要保存的初始层次结构和层次结构可能完全不同.
层次结构表示为集合,我使用parentIds使用ol和li标记构建树.
当用户单击"保存"时,我需要使用新的parentId更新集合中的所有项目,并将每个项目与服务器同步.
我想知道是否有人对如何继续这里有任何建议.我在Backbone.sync的文档中看到,'' setTimeout用于批量快速更新到单个请求.''所以,如果我理解正确,我会将每个调用排队到Backbone.sync然后使用setTimeout几秒后将我的队列发送到服务器?
另外,如果我重写Backbone.sync,我是否仍然需要一个'save'方法,用于解析响应的json的集合(服务器响应必须发回一个对象列表),然后调用模型.set集合中的每个项目?有人有任何示例代码吗?
谢谢!
我希望得到关于如何使用backbone.js嵌套模型和视图的一般想法.
假设你有一堆对话框,每个对话框都有一堆标签.特定选项卡可能会在多个对话框中重复使用.每个选项卡都非常不同,您可能希望动态地向对话框添加新选项卡.
对每个选项卡都有不同的视图对我来说似乎合乎逻辑.此外,对话框应该是一个视图.我有点不清楚模型和视图如何组合在一起.
这是我的主要问题:
如果父视图想要呈现子视图,则可能需要实际执行以下操作:
var childView = new ChildView();
Run Code Online (Sandbox Code Playgroud)
然后,使用jQuery
this.$("#listOfChildViews").append(childView.el);
Run Code Online (Sandbox Code Playgroud)
为确保在添加之前清除列表,我们需要
this.$("#listOfChildViews").html("");
Run Code Online (Sandbox Code Playgroud)
这是首选方式吗?对我来说似乎有点不好,因为它会删除整个列表,然后创建所有新对象并立即将它们添加到其中.如果没有"渲染"功能本身可能会更好,而是'renderInitially',然后简单地'添加'(用于添加新的子视图).
对不起,这不太一致!
我在我的模型上调用'save'并在我的PHP后端将新模型作为json返回.当我逐步完成Backbone.Model.save方法时,我可以看到它成功获取服务器响应,然后设置模型(在下面的options.success闭包中).但是当执行返回到我的单击处理程序时,模型具有旧属性(即,未设置id).可能会发生什么?
这是我的点击处理程序:
addButtonClick: function(e) {
var data = $(e.target).closest('form').serializeObject();
var p = new Domain.Page; // this extends Backbone.Model
p.set(data);
p.save();
// ****
// **** AFTER p.save, the model p still has the OLD ATTRIBUTES... why??
// ****
return false;
}
Run Code Online (Sandbox Code Playgroud)
这是Backbone的保存方法:
// Set a hash of model attributes, and sync the model to the server.
// If the server returns an attributes hash that differs, the model's
// state will be `set` again.
save : function(attrs, options) {
options || …Run Code Online (Sandbox Code Playgroud)