我是Backbone的新手。 所以我试图从REST服务中获取数据。 这是我的简单代码: $(function () { var Entity = Backbone.Model.extend({ url: function() { return 'http://localhost:8080/rest/entity/'+this.id; } }); var EntityList = Backbone.Collection.extend({ model: Entity, url: 'http://localhost:8080/rest/entity' }); var entityList = new EntityList(); entityList.fetch(); }); 我的rest服务返回下一个JSON: [{"id":1387, "version":3, "entityName":"entity01", "entityLabel":"Entity01", "entityPluralLabel":"Entity01", "attributes": [{"id":1425, "slot":"D001", "version":0, "attributeName":"dfield", "attributeType": {"id":7, "description":"Date", "attributeType":"date", "databaseType":"DATE" }, "options":[], "order":2, "attributeLabel":"dField", "checked":null }, […]
有没有办法从骨干模型中删除属性? 原因是我将保存的额外数据传递给某些操作,但是这些数据会自动添加到我的模型中 该文件说,不直接编辑model.attributes,所以我看到做的唯一的其他方法是使用set方法,并将属性设置为null,但这并不理想 var myModel = new Model() myModel.save({name:'Holla', specialAttr:'Please Remove me'}) myModel.set({tempAttr:null}) if(myModel.attributes['specialAttr'] == null){ alert("Model does not have a specialAttr") } 我也尝试从属性属性中删除它,但它并没有真正删除它。
我的后端有两个单独的页面,一个用于处理模型保存请求,另一个用于模型提取。 调用save()和fetch()以使用不同的URL的最佳方法是什么? 谢谢。 编辑:在研究注释源后,我看到,实际上可以提供一个options哈希来获取和保存 //taken from backbone source: save : function(attrs, options) { options || (options = {}); if (attrs && !this.set(attrs, options)) return false; var model = this; var success = options.success; options.success = function(resp, status, xhr) { if (!model.set(model.parse(resp, xhr), options)) return false; if (success) success(model, resp, xhr); }; options.error = wrapError(options.error, model, […]
我正在尝试使用Backbone.Paginator.js在同一页面上运行多个应用程序(paginator的多个实例)。 我创build了一个testing页面。 (导航到backbone.paginator/examples/netflix-infinite-paging )。 我离开了app.js的代码,并创build了app2.js ,这是app.js一个克隆,但是所有的javascript代码都位于一个文件中,并且应用程序已经被重命名为app2。 两个实例工作在页面的第一次加载,但随后的请求/刷新只加载app2.js的数据。 是否有可能在同一页面上运行多个实例? 我有兴趣使用自动分页(无限/无限滚动),所以我试图使用保罗爱尔兰的jQuery Infinite Scroll plugin但我无法得到它的工作。 我正在启动插件以在文档就绪(这不起作用,如预期的那样)上运行,但是也在app2的ResultView中运行代码,这不起作用。 任何想法如何获得自动分页无限滚动解决scheme? 我跑到https://github.com/joneath/infiniScroll.js,但我不知道如何将其与Backbone.Paginator.js集成。 我仍然在学习,任何帮助将不胜感激! 🙂 更新:经过不同浏览器的进一步testing,似乎问题可能是caching问题/差异。 例如,在Safari中,刷新页面时有时(随机)有效。 我不知道如何debugging。 有任何想法吗?
进入Backbone.js来构build我的项目的JavaScript代码,我喜欢HAML模板在后端(导轨),所以我喜欢用它来为Backbone Views模板。 我知道有几个HAML端口的JavaScript,如https://github.com/creationix/haml-js和骨干支持JST和胡子轻松。 什么是最好的方式来使用哈姆模板,而不是。 在客户端使用HAML有什么缺点吗? 性能,额外的脚本加载时间(通过像jammit这样的资产包装工具来处理)
我对backbone.js非常感兴趣。 但是当我学习的时候,在创build这个结构上有很多混乱。 任何人都可以给我一个简单的教程,有很好的例子 这对所有新学习者都是非常有用的。
我想有一个“全部捕获”的路线,当没有其他定义的路线匹配时运行。 一种404 NotFounderror handling程序。 我已经尝试添加这个,但工作,但防止其他路线匹配: this.route(/(.*)/, 'notFound', this.notFound); 任何人都解决了这个问题?
我有一个非常简单的集合,但我似乎无法绑定到它的变化事件。 在Chrome的控制台中,我正在运行: var c = new AwesomeCollection(); c.bind("change", function(){ console.log('Collection has changed.'); }); c.add({testModel: "Test"}); // Shouldn't this trigger the above log statement? 因为这是难以追查的事情之一,所以我怀疑有谁知道事情的真相(如果真是太棒了!)。 所以,我问了两个问题: 上述代码是否按预期工作? 如果是这样,你有什么build议如何追踪这将失败? 谢谢
我已经inheritance了使用Backbone.js(我从来没有使用过)构build的一个半成品的移动应用程序。 我很简单地需要在用户点击后退button时发回用户。 一些简短的研究让我相信它与Backbone.history但我无法弄清楚是什么。 有任何想法吗?
我有一个数组作为属性的backbone.js模型: defaults: { myArray : [0,1,2] } 我试图设置一个特定的索引值。 var myIndex = 1; myModel.set({"myArray"[myIndex] : newVal}); //doesn't work myModel.set({"myArray[myIndex]": newVal}); //doesn't work myModel.set({"myArray" + "[" + myIndex + "]": newVal}); //doesn't work 什么是适当的语法来获取/设置数组属性? 谢谢。