我正在评估一个项目中使用的Backbone JavaScript框架 ,该项目将在树视图窗口小部件中显示分层模型(请考虑Windows文件浏览器)。 我喜欢 Backbone如何看待这个世界。 然而,在我接触到一个概念certificate之前,有很多代码都是由Backbone实际上从一个服务器接收一个分层模型并更新一个树部件。 我已经看到了用Backbone来表示深层数据结构的各种解决scheme,但我想知道…有没有人真的这样做? 只要知道这是可能的将是一个帮助。 实际上命名树视图UI组件和在Backbone中使数据分层的指针会更好。 一些示例代码将会非常棒。 就数据大小而言,树会运行100个叶子项目(文档)的低1000个节点(文件夹),并且逐渐加载数据(例如,一次点击一个文件夹)将是很好的。虽然这可能不是一个showstopper。 谢谢!
我正试图学习他们在Backbone 0.9.9中所做的新改变。 目前我遇到了一些问题,要了解ListenTo与之间的区别: listenTo var View = Backbone.View.extend({ tagName: "div", intialize: function() { this.listenTo(this.model, 'change', this.render); }, render: function() { this.$el.empty(); this.$el.append('<p>hello world</p>'); } }); 上 var View = Backbone.View.extend({ tagName: "div", intialize: function() { this.model.on('change', this.render, this); }, render: function() { this.$el.empty(); this.$el.append('<p>hello world</p>'); } }); 我听说listenTo允许stopListening取消订阅所有事件时,例如视图被删除,以避免内存泄漏。 这是唯一的原因吗? 问候,博多
当我运行我的testing时,我得到了上述错误信息。 下面是我的代码(我使用Backbone JS和Jasmine进行testing)。 有谁知道为什么发生这种情况? $(function() { describe("Category", function() { beforeEach(function() { category = new Category; sinon.spy(jQuery, "ajax"); } it("should fetch notes", function() { category.set({code: 123}); category.fetchNotes(); expect(category.trigger).toHaveBeenCalled(); } }) }
我的模型已经有一个defaults散列。 当部分视图/页面重置时,我希望将模型重置为其原始默认值。 目前,我明确地将每个属性设置为其默认值。 有什么内置的或JavaScript / Underscore.js / Backbone.js / jQuery函数,我可以用一个语句做到这一点?
我是JS和Backbone的新手 这两者有什么区别? TestModel = new Backbone.Model({ title: "test title" }) TestModel = Backbone.Model.extend({ title: "test title" })
我们正在使用Backbone,RequireJS和Handlebars构build一个非trival的web应用程序,当然,我只是好奇而已。 目前,我们的每个模型都是这样的: define(['Backbone', 'js/thing/a', 'js/thing/b', 'js/lib/bob'], function(a, b, bob) { return Backbone.Router.extend({ // stuff here }); }); 其中thing / a,thing / b都有自己的依赖关系,比如在Handlebars模板上。现在发生的事情是,在我的main.js中,所有的“顶级”路由器都被加载和初始化。 每个顶级路由器都有一组依赖关系(模型,视图等),每个依赖关系都有自己的依赖关系(模板,帮助器,utils等)。 基本上,一个大树的结构。 在这种情况下的问题是整个树被parsing并加载页面加载。 我不介意这样做,因为我们将通过优化器最终运行它,并最终得到一个大的单个文件(将RequireJS简化为模块化框架)。 不过,我很好奇你是否可以按需求加载视图和模板等内容。 这里解释了“简化的CommonJS包装”,所以我试过了: define(function(require) { Backbone = require('Backbone'); return Backbone.Router.extend({ doStuff: function() { var MyView = require('js/myView'); new MyView().render(); } }); }); 然而,看着Chrome的networking检查员,看起来RequireJS – 即使不触发触发doStuff处理程序的路由 – 也不知何故,仍会加载myView依赖项。 问题: 这实际上是可能的吗? RequireJS中是否存在黑色的磁条,在没有实际触发doStuffpath的情况下寻找require()调用? […]
我始终扩展基础骨干视图,并为每个部分提供基础视图,以便可以在多个层面上进行扩展。 我的问题是,查看mixins最有效的方法是什么:可重用的视图部分可以混入任何视图。 例如: var BaseProfile = Backbone.View.extend({ …}); var UserProfile = BaseProfile.extend({ …}); var VideoSupport = Backbone.View.extend({ …}); 用UserProfile视图混合VideoSupport视图(一个事件对象和一些方法)的最佳方法是什么?
我刚刚开始进入backbone.js。 看起来好像很相似,不过你可以看一个例子,说:“好吧,那很简单!” 并开始生产。 这看起来不错。 这个文档没有问题,但是我发现自己并没有很好地理解这个“大局”,以及所有这些组件如何协同工作。 事件在不同视图中被绑定和呈现的方式实际上似乎是很多的纠缠。 我理解需要分离的担忧,但我实际上想知道这是否只是一个过度工程。 基本上…我将无法立即生产与backbone.js。 我想会有一两天的学习曲线。 进入backbone.js的最好方法是什么? 只是继续沿着,或者有一些更大的示例应用程序下载某处去看? 有更好的select,可能更容易学习,并提供相同的好处? 对我而言,生产力和直觉是非常重要的。 我有点像骨干一样的感觉.js的作品有点陌生。 那可能就是我。 换一种说法,如果没有像骨干这样的库来开发我的应用程序也许会更好一些,有机地创build像backbone.js这样的框架,但是更像是对我来说更直观的东西,以及与最终代码库更直接的内容。 我一直在试图得到简单的例子来处理我自己的代码,并且我没有得到Javascript错误…但它不起作用。 “一件小事”很可能是错误的,但我开始觉得debugging我的骨干应用程序可能是一个问题…所以也许有机地增长我自己可能是一个更好的select,我自己的理智。 在黑暗中debugging是一个真正的生产力杀手…老实说,我宁愿做我自己的框架,并编写我自己的代码,如果它让我无休止的debugging几个小时。 我不知道该怎么做 – 因此我在问。
我最近对backbone.js感到非常兴奋,但是我所能find的只是networking上最小的教程。 一直在寻找一个backbone.js的书,但由于刚刚出来,没能find任何。 希望你们知道目前正在制作,也许是在某个地方可用的testing版本?
以下两行代码有什么优点和缺点? 我不明白为什么有两种不同的方式来做同样的事情。 this.listenTo(app.Todos, 'change:completed', this.filterOne); app.Todos.on('change:completed', this.filterOne); 另外当使用.on,我如何确定是默认的上下文?