我对应该在Backbone.js中直接实例化哪些代码感到困惑。我应该创建一个通用对象App来实例化我的View吗?我应该实例化一个AppView来实例化页面上的所有其他View并协调所有内容吗?我应该创建View、模型和集合并将它们附加到window吗?此外,Controller是否必要?到目前为止,我没有发现它们有任何用处,而且许多示例中都缺少它们。我是否应该像在其他语言的MVC框架中那样实例化一个Controller并让它创建其他对象?我的猜测是我可以自由地做我想做的事,但我更希望得到一些经常使用它的人的建议。 最佳答案 Con
我有一个非常简单的网页,它使用backbone从模板文件加载View:TravelDatedon'tknowit?FLIGHT#don'tknowit?Match在flight-match-form.js中,我只是说:$(document).ready(function(){varMatchView=Backbone.View.extend({initialize:function(){this.render();},render:function(){//Compilethetemplateusingunderscorevartemplate=_.template($("#templ
我正在寻找这样的东西:vardiv=document.createElement('div');div.id='proprioceptiveDiv';$(div).on('appendedToDOM',function(){//...});document.body.appendChild(div);//triggersabovehandler这存在吗?我正在使用jQuery,不想仅仅为了这种能力而导入整个插件或另一个库,所以我只对一个简短的解决方案感兴趣。 最佳答案 您可以使用MutationEvents但这些事件已在DOM事件规
几乎在每个Backbone/Require.js项目中,您都会看到类似这样的模型和View:define(['jquery','underscore','backbone'],function($,_,Backbone){//Somecodegoeshere,perhapsaBackbonemodelorview});但是,假设您正确设置了Require.jsshim(使用Backboneshim包括诸如deps:["underscore","jquery"]之类的内容),您只需要定义Backbone--将Backbone定义为依赖项也隐含地将jQuery和Underscore定义为依
我对创建MVCjavascript框架感到好奇,这既是一种乐趣,也是一种学习体验。在backbone.js内部https://github.com/jashkenas/backbone/blob/master/backbone.js作者使用underscore的_.extend()方法来“扩展”主干对象。从Model开始,我试图找出这样做的好处。//AttachallinheritablemethodstotheModelprototype._.extend(Model.prototype,Events,{});这是如何运作的?Model在此之前已经定义,然后作者想要将源对象中的所有属
当使用Chrome调试器单步调试我的JS应用程序中的代码时,我经常发现自己费力地浏览了我不感兴趣的主干/下划线/jQuery代码。有没有办法单步执行我的代码,但让调试器跳过这些库中的代码? 最佳答案 我刚刚花了三天时间在chrome的调试器中做这件事。诀窍是在Backbone/jQuery/Underscore代码和F8之后的下一行设置断点。喜欢for(_(obj).each(function(v,k,l){console.log(k,v,l);});在for行和console行上设置断点。F11到for行,然后F8然后继续你的步进
我有以下路由器:appRouter=Backbone.Router.extend({routes:{'':'inbox','inbox':'inbox','discussions_engagement':'contacts',},inbox:function(page){console.log('inbox');varpage=page||1;engage.app.hydrateInbox(page,engage.app.showInbox);},....};当我在http://[...]/#inbox上打电话时appRouter.navigate('inbox',{trigger:t
我有一个集合女巫可以在后端对一个集合进行分页,所以在滚动时我会添加另一批项目。我知道服务器上的项目数。我正在寻找一种方法来使用getCounter方法扩展我的所有集合。这个想法是最初设置服务器计数器,当用户从集合中添加或删除项目时,计数器更新。最好的方法是什么?我认为问题在于,当我从服务器获取新项目时,add事件也会被触发。否则我可以绑定(bind)到add和remove事件。 最佳答案 您需要控制哪些添加和删除应该计算在内,哪些不计算在内。我想到了两个选项。使用silent:true选项使所有不应计入的操作静音,并将您的计数器连接
如果先更改作用域属性,然后再广播事件,那么相应的观察者回调和事件监听者回调是否总是以相同的顺序执行?例如:$scope.foo=3;$scope.$broadcast('bar');和其他地方:$scope.$watch('foo',functionfn1(){...});$scope.$on('bar',functionfn2(){...});fn1是否总是在fn2之前执行,反之亦然,或者是否可以不依赖该顺序?请引用来源,最好是官方Angular文档。以防万一:假设$scope.foo=和$broadcast发生在由ng-click(即用户交互)调用的函数中[旁白]抱歉,问题标题草率
所以现在当我销毁模型并且服务器返回错误时,销毁事件无论如何都会被触发并且模型数据会被重置..有什么办法可以防止这种情况发生吗? 最佳答案 您可以将{wait:true}作为选项传递给destroy(),这会导致它在从模型中删除模型之前等待来自服务器的响应收藏。在将View绑定(bind)到事件方面,您应该分别处理remove和destroy事件,因为remove事件将被触发当服务器成功返回时,但如果服务器返回错误则永远不会。或者,您可以将error处理程序传递给model.destroy,如果服务器因任何原因发生故障,您可以使用它来