草庐IT

javascript - 在主干js中的 View 中嵌套 View

我正在使用backbone.js构建一些复杂的View关系,我想知道从javascript性能的Angular来看,做这样的事情是否有任何问题:varviewOne=Backbone.View.extend({tagName:'li',initialize:function(){this.v2=newviewTwo({parent:this});},clickHideOne:function(){$(this.el).removeClass('selected');}});varviewTwo=Backbone.View.extend({tagName:'a',initialize:f

javascript - 在主干应用程序中获取以前的路由器/url

我有一个主干应用程序,我需要知道访问当前路由的路由器。可能吗?例如:-我从#/test1到达#/current,在另一个实例中,从#/test1到达。那么我可以通过某种方式知道检测之前的路由器命中吗?我用过:Backbone.history.fragment这只给我当前访问的路线,而不是从哪条路线。 最佳答案 您可以将您的历史存储在某个数组中,并对上一个/上一个项目进行一些操作。varhistory=[];this.listenTo(this,'route',function(name,args){history.push({nam

javascript - 如果我有一个没有模型的主干 View ,我是否偏离了 MVC?

我有几个View似乎没有逻辑连贯的模型。我仍然可以尝试为这些创建虚拟模型(并且适本地也有路由器),但对我来说这似乎不自然。那么拥有一个没有相应模型的主干View是一种反模式吗?专家对此怎么说? 最佳答案 backbone的各个组件可以很好地相互配合,但它们没有必要总是在一起。我经常有没有View的模型和没有模型的View。Backbone应用的每个部分都可以以多种不同的方式使用,以促进您需要应用执行的操作。 关于javascript-如果我有一个没有模型的主干View,我是否偏离了MVC

javascript - 在模板上渲染主干集合时无法获取模型的 cid

我正在尝试在使用mustache.js构建的模板上渲染Backbone集合。问题是我无法在模板中获取模型的cid。我的代码是PhoneAppointments{{_.each(slots,function(slot){}}{{if(slot.aptType=="P"){}}{{=slot.beginTime}}-{{=slot.endTime}}{{}}}{{});}}从上面的代码中,我可以得到aptId、beginTime和endTime,但不能得到Cid。如何在模板上渲染时从集合中获取模型的Cid?我在View中的渲染方法看起来像这样render:function(){vartem

javascript - 主干 View 可以有多个集合吗?

我刚开始使用backbone,并尝试建立一个包含问题列表的View。在列表的左侧,我有四个过滤器,用于按语言、国家/地区、状态和学习过滤列表。列表和每个过滤器都加载到它们自己的集合中。我的想法是用多个集合制作一个View,但我想知道这是否是主干中的最佳实践,因为我看到的所有示例每个View只有一个集合。另一个想法是分成两个View,一个负责过滤器,然后一个subview只负责问题列表。或者,将所有集合放到一个模型中,然后将该模型传递给我的View是否更Backbone,就像它在此处提到的:http://documentcloud.github.com/backbone/#FAQ-nes

javascript - 将主干模型绑定(bind)到 Marionette ItemView - 阻塞 .fetch()?

这是一个由两部分组成的问题。1)有没有更好的方法将模型异步渲染到View?我目前正在模型中使用fetch方法发出ajax请求(尽管我在初始化时明确调用它),然后使用应用程序事件呈现模板化View,vent,在调用parse方法后从模型内部发布。酷但不稳定?2)阻塞式fetch方法是否有用,是否可能?应用程序将其呈现到页面:layoutnavbarindex然后它获取模型并渲染它:layoutnavbarthing1somethingsomethingelse但是,如果我不使用vent触发器,它(预期)会呈现:layoutnavbarthing1nullnullhtml模板:navbar

javascript - 主干 listenTo 回调参数

我是Backbone的新手,我对示例待办事项应用代码的片段感到困惑:http://backbonejs.org/docs/todos.html在AppView对象上有一个名为addOne的函数,它接受一个参数:addOne:function(todo){varview=newTodoView({model:todo});this.$("#todo-list").append(view.render().el);},只要在Todos模型上触​​发add事件,就会调用此函数。这里似乎没有任何内容告诉监听器它需要将todo参数传递给addOne函数:this.listenTo(Todos,'

javascript - 主干路由——检测浏览器后退按钮按下

我正在尝试找到一种方法来检测用户何时按下浏览器中的后退/前进按钮。我正在使用Backbone来处理路由,并使用Backbone来呈现我的View。问题是我无法从任何地方连接到此页面更改事件。我尝试在我的View初始化函数中放置一个日志..但是当我使用后退按钮时它没有被触发。我真的不确定还有什么方法可以检测到此页面更改。 最佳答案 您可以将回调绑定(bind)到Backboneroute事件:Backbone.history.on('route',function(){//Doyourstuffhere});您可以使用Backbone

javascript - 主干事件触发两次

为什么我必须创建一个整体closeprototype只是为了让我的事件在我看来不受约束?Backbone不应该直接构建它吗?有没有办法检测何时删除View?在我离开并返回View后,我的主干事件会触发两次。events:{"click#userDropdownButton>a":"toggleUserDropdownMenu","click":"hideUserDropdownMenuIfClickedOutside"},el:"body",initialize:function(){this.render();},//Shows/hidestheuserdropdownmenutog

javascript - For 在主干集合上循环

对backbone还很陌生,所以这是一个非常基本的问题。我将一个Backbone集合传递给了一个函数,我可以证明它已被传递并且集合中的模型具有ID。这是我设置id的方式-convertToMapObjects:(results)=>objectList=newObjectList()results.each(result)->testObj=newTestObject()testObj.setid=result.get("id")objectList.add(testObj)在另一个函数中(通过使模型触发事件来访问)-getIds:(objects)=>ids=(object.idfo