所以我正在设置一个具有更新属性的模型。然后在我看来,我正在监听此模型的更改事件。当它触发时我想我应该使用model.changedAttributes?我是否将回调传递给它?它应该返回所有更新的或新的属性的散列?无论如何要知道哪些是更新的,哪些是新的?一旦我有了更改属性的散列值,我应该如何进行更新?将对象解析为属性类型,还是我应该从一开始就使用更高分辨率的监听器?谢谢! 最佳答案 如果您的View仅显示单个属性-例如,如果它是一个显示模型的某些bool属性的复选框-您应该监听该属性的'change:attribute_name'事件
我有这个REST服务器(由我自己编写),它通过简单的HTTP身份验证来保护。现在我使用backbone.js重新编写了应用程序,但我不确定如何对我的客户端进行身份验证。如果我在JS中这样做,用户/密码将是可见的。那么我应该如何修改我的服务器或我的客户端JS以确保安全?以前我只是为每个请求向REST服务器提供用户并传入PHP,请指导我,谢谢。 最佳答案 HTTP基本身份验证容易受到窃听和中间人攻击。建议使用HTTPS。但是,如果这不是一个选项,您始终可以将cookie发送回客户端并在其中输入用户名/密码,以防止它显示在JS文件中。不用
故事:我有很多属性需要设置。由于它们有相似之处,我选择读出输入框所属的类作为属性名称。问题:可以设置对象的动态属性,就像关联数组一样。所以我可以做varcustomattribute=this.$el.parents('div').attr('id');varvalue=$(e.currentTarget()).val();this.model.attributes[customattribute]=value;但这不会触发模型的更改事件。我可以手动触发更改事件,但这不会更新this.model.changedAttributes(),我只需要设置更改的属性,而不是每个属性。这当然也行
给定下面的主干View函数,将this(即当前View)传递给回调中定义的匿名函数的正确方法是什么?addSomething:function(e){varnewSomething=this.model.somethings.create({someProperty:xxx},{success:function(m,response){this.doSomething();//***HERE****},error:function(m,response){//Error}});},没有和变化,anon函数中的this设置为window。我可以这样设置一个引用:varthisView=t
我有一些代码,我希望NoteCollectionView向NoteCollection添加新的Note。这是由NoteCollectionView中的函数newNote触发的:newNote:function(data){varnote=newNote(data);this.collection.add(note);},我对主干还是很陌生,我想确保它与服务器同步。我担心的是:1)将此注释简单地添加到集合中是否会从服务器触发save(),并使用服务器提供的ID更新模型?或者,2)如果服务器没有更新我的模型并给我一个实际的ID,我该如何使用note.save()保存模型并从服务器取回一个I
我想从Backbone集合中创建一个特定属性值的数组。vardays=_.select(this.collection.models,function(model){returnmodel.attributes.type==='session';});days=_.pluck(days,'attributes'),days=_.pluck(days,'date');这可行,但似乎效率低下。有没有一种方法可以在不必定义days三次的情况下完成同样的事情? 最佳答案 pluck是一种包装map的便捷方法,而map可直接在集合上使用,这应
我目前正在构建一个巨大的主干应用程序(Facebook克隆)。在过去的几天里,由于RobConery的出色教程(如果您开始使用MVC3和BBhttp://tekpub.com/productions/mvc3,必看)现在我已经到了需要在我的应用程序中切换页面的阶段,我开始将其连接起来,但感觉就像我自己做了很多这样的事情。这很好,我知道我可以做我想做的事。我已经解决了内存泄漏问题,通过确保在切换页面时取消绑定(bind)并删除我的模型/集合/View,Switchingviewsinbackbonefornavigatingbetweenpages-whatstherightway?但是
最近几天我一直在玩backbone.js,编辑Todos示例并编写我自己的版本。我现在正在考虑创建一个具有多个路由的Controller,但是在遵循Todos示例之后我发现调用Todos.fetch()会导致项目重新呈现.我认为它调用了刷新事件?backbone.js文档说:Notethatfetchshouldnotbeusedtopopulatecollectionsonpageload—allmodelsneededatloadtimeshouldalreadybebootstrappedintoplace.fetchisintendedforlazily-loadingmode
我正在努力思考这个概念。你能帮我解释一下吗?也许可以提供一个简单的例子来说明el:属性和tagName:属性之间的区别?在一些示例中,不同的View有时使用el:,而其他View使用tagName:。我特别想弄乱我自己对这个example的实现 最佳答案 区别在于:el应该用于保留对表示整个View的实际DOM节点的引用。这意味着您可以使用jQuery或w/e轻松地对其执行操作。$(this.el).hide()或$(this.el).html('我现在是一个Jquery对象');TagName只是一个字符串,用于确定el的DOM节
我阅读了很多Backbone.js教程,但其中大部分都涉及静态对象。当然,我在服务器上有数据。我想要一个教程,展示backbone.js如何与服务器通信以获取数据、发布数据等。这是.sync,对吧?我阅读了backbone.js文档,但仍然不清楚如何使用此功能。或者谁能给我举个例子?根据:http://documentcloud.github.com/backbone/#SyncBackbone.syncisthefunctionthatBackbonecallseverytimeitattemptstoreadorsaveamodeltotheserver.但是什么时候?我把函数放在