我有三种不同的方法来初始化和呈现视图及其子视图,并且每个方法都有不同的问题.我很想知道是否有更好的方法可以解决所有问题:
在父级的初始化函数中初始化子级.这样,并不是所有东西都会陷入渲染状态,因此渲染时阻塞较少.
initialize : function () {
//parent init stuff
this.child = new Child();
},
render : function () {
this.$el.html(this.template());
this.child.render().appendTo(this.$('.container-placeholder');
}
Run Code Online (Sandbox Code Playgroud)
问题:
最大的问题是第二次在父级上调用render将删除所有的子事件绑定.(这是因为jQuery的$.html()工作原理.)这可以通过调用this.child.delegateEvents().render().appendTo(this.$el);来减轻,但是第一个,也是最常见的情况是,你正在做更多不必要的工作.
通过附加子项,可以强制render函数了解父DOM结构,以便获得所需的顺序.这意味着更改模板可能需要更新视图的渲染功能.
初始化父级的子级initialize(),但不是追加,而是使用setElement().delegateEvents()将子级设置为父级模板中的元素.
initialize : function () {
//parent init stuff
this.child = new Child();
},
render : function () {
this.$el.html(this.template());
this.child.setElement(this.$('.placeholder-element')).delegateEvents().render();
}
Run Code Online (Sandbox Code Playgroud)
问题:
delegateEvents()现在变得必要,这只是在第一个场景中的后续调用中必需的一点点负面.render()而是在父方法中初始化子项.
initialize : function () {
//parent init stuff
},
render : function () {
this.$el.html(this.template()); …Run Code Online (Sandbox Code Playgroud) 所以我刚刚开始使用sinon.js&为我正在进行的javascript应用程序编写测试jasmine.js.总体上工作得很好,但我还需要能够测试我的路由器.
处于当前状态的路由器将触发许多视图和其他内容,jasmine.js通过调用Backbone.navigate依赖于应用程序状态和UI itneraction来终止当前测试.
那么我怎样才能测试到不同位置的路由是否可行,同时保持路由器"沙盒化"并且不允许它们改变路由?
我可以设置一些监视pushState更改或类似的模拟函数吗?
我想覆盖backbone.sync我已经问过这个,但问题是我不太明白.如果我要覆盖同步功能,我需要知道放置代码的位置.
如果我把它放在这样的模型上
model = Backbone.Model.extend({ sync:"" });
Run Code Online (Sandbox Code Playgroud)
那怎么称呼呢?如果我要使用保存方法.另外我需要将create的methodMap从POST更改为PUT.我暂时使用了这个'create': 'PUT',实际编辑backbone.js文件(我知道它并不好).在我忘记之前我还需要添加这个
sendAuthentication = function (xhr) {
xhr.setRequestHeader('Authorization', auth)
};
Run Code Online (Sandbox Code Playgroud)
作为beforeSend参数,因为我的服务器具有身份验证.我应该在哪里做呢?我应该去哪里放密码?在我的模特?在我的收藏?还是在我看来?有帮助吗?谢谢.
我也可以覆盖我的收藏中的同步吗?我的意思是我可以拥有这样的东西吗?
collection = Backbone.Collection.extend({ sync:""});
Run Code Online (Sandbox Code Playgroud) 我正在开发一个开源产品,以便在CMS中进行协作编辑.用例如下:当用户A正在编辑一些小节点时,用户B更新同一节点.除了保留光标位置外,一切都工作正常,更新用户的微小编辑器.即
var bookmark = editor.selection.getBookmark();
editor.setContent(content);
editor.selection.moveToBookmark(bookmark);
Run Code Online (Sandbox Code Playgroud)
如果内容在插入符号之前已更改,则无效. http://tinymce.moxiecode.com/forum/viewtopic.php?id=20458提到会有更新来处理这种情况,但我现在能做些什么吗?先感谢您!
用户可以这样做.
但是,图像自动调整大小等会中断.
这让我成为一个伤心的男孩.
如何在全站范围内限制图片上传到GIF,PNG和JPEG?
对于Archetypes
对于敏捷
backbone.js ×3
javascript ×3
archetypes ×1
dexterity ×1
jasmine ×1
plone ×1
sinon ×1
tinymce ×1