Articles of backbone.js

骨干点击事件突破

我使用Node作为后端在Backbone中构build应用程序。 作为应用程序的一部分,我正在处理我的视图上的点击事件。 一个例子是这样的: window.MyView = Backbone.View.extend({ tagName: 'section', className: 'calls', events: { 'click a.first': 'gotoFirst', 'click a.prev': 'gotoPrev', 'click a.next': 'gotoNext', 'click a.last': 'gotoLast', 'click a.page': 'gotoPage' }, 当我第一次加载视图,并点击一切正常工作(点击事件得到正常处理)。 但是,如果我导航到新视图,然后返回到第一个视图,则单击事件将被中断。 通过导航到新的视图,我的意思是我做了这样的事情: $container.empty(); $container.append(window.myNewView.render().el); 然后我回去这样回去: $container.empty(); $container.append(window.myView.render().el); 但是当我放弃这个观点时,我的点击事件就被打破了。 我怎样才能解决这个问题? 提前致谢!

Node.js / express.js / Backbone.js:req.body.keys是未定义的?

我在客户端使用Backbone.js,在服务器上使用express.js,我试图通过Backbone保存/放置模型更新。 我对Backbone.sync没有做任何事情,所以它应该只是简单的旧$ .ajax。 在服务器上,我有一个简单的 app.put('my-url', function(req, res){ req.body.keys.forEach( function(key){ // do stuff with key }); }); 每一次,我都会收到一个错误消息,说'不能调用forEach'的方法'undefined,并且肯定有一个快速的console.log显示req.body.keys是未定义的。 另外一个console.logs对象表明Object.keys和'forEach'就好了,那个types的req.body就是对象。 任何人都看到错在哪里? 我试过JSON.parse(req.body),并得到着名的“意想不到的令牌o”错误…

骨干路由器:摆脱URL中的#

我得到骨干路由器工作 App.Router = Backbone.Router.extend({ routes: { "todo": "todo" }, todo: function() { alert(1); } }); Backbone.history.start(); 当我转到url: domain:port /#/ todo时,这个效果很好 我希望这个工作没有#在URL中,我试着把文件中提到的pushState参数。 Backbone.history.start({pushState: true}); 这只是将#urlredirect到非哈希值 domain:port /#/ todo(redirect到==>)domain:port / todo 但是当我直接访问这个URL 域:端口/待办事项 它不起作用:“不能GET / todo”。 有没有什么办法,我可以使这个url没有#的工作呢?

查看对象引用的工具

有没有Node.js或浏览器的工具,我可以找出哪些对象持有对象X的引用? 现在我正在使用Backbone进行前端开发,即使我删除了视图,但是之后似乎仍然有对它们的引用。 我首先怀疑这种行为的原因是因为我在Chrome和Mozilla中使用插件/插件进行Backbonedebugging。 这确实让我怀疑,也许这些程序本身就是持有引用到骨干对象的程序!

怎么了所有的JS框架?

我是.NET(完成我在ASP.NET WebForms中的大部分工作)开发人员。 但是,我并不是仅限于自己的这个框架,不时地阅读和尝试学习新的东西。 最近我注意到Javascript世界里发生了很多事情。 我熟悉jQuery / UI并从客户端调用Web服务。 但最近我看到很多用Javascript编写的新框架。 我真的不知道为什么这么多是最近创造的。 任何人都可以启发我为什么会这样呢? 不同的框架有什么不同? 我应该何时使用/不使用它们? 例如node.js对我来说是非常奇怪的。 在JS中编写服务器端代码? 在JS中编写HTTP服务器(或者没有人真的这么做?)。 在JS上创build客户端UI? 我真的不明白。 添加到这至less5个模板框架,我的头即将爆炸:)

如何从另一个方法调用一个方法

可能重复: 从module.exports中的另一个函数调用module.exports中的“本地”函数? 我正在使用node.js来开发我的应用程序。 我必须从我的main.js调用另一个方法中的一个方法。 我该怎么做呢? 我在这里解释细节。 app.js app.post('/getNotificationCount', function (req, res) { res.setHeader('Cache-Control', 'max-age=0, must-revalidate, no-cache, no-store'); res.setHeader('Connection', 'keep-alive'); res.contentType('application/json'); res.setHeader('Expires', new Date().addYears(-10)); try { //here i have my custom code/logic //i have to call '/getNotification' method here, i have to pass parameter too.. } catch (err) { console.log('\r\n ' + new Date().toString() + ' […]

骨干 – 未定义的请求正文

这一定是我不明白的事情。 我有一个名为Album的Backbone模型: var Album = Backbone.Model.extend({ idAttribute: "_id", urlRoot: "http://localhost:8000/albums", defaults:{ "_id": null, "title": "", "year": "", "genre": "" } }); 我有一个使用Restify的Node.js服务器: var server = restify.createServer(); server.put('/albums/:id', putAlbum); //putAlbum is a function defined above. server.use(restify.bodyParser({ mapParams: false })); 我的问题是,当我保存一个现有的相册模型(也是当我用集合中的创build方法发布一个新的),服务器接收请求和调用权函数,但是当我这样做: console.log(req.body); 身体是'未定义的'。 我总是试图检查params属性,但只有它的id。 是我configuration错了吗?

无法从主干进行POST来expression

这是我正在研究的观点。 这是一个简单的registry格。 它从一组input标签捕获数据,并将其发布到服务器。 但是,POST数据似乎并没有被传送到服务器。 define(['text!templates/register.html'], function(registerTemplate){ var registerView = Backbone.View.extend({ el: $('#content'), events: { "submit form" : "register" }, register: function() { var postData = { firstname: $('input[name=firstname]').val(), lastname: $('input[name=lastname]').val(), email: $('input[name=email]').val(), password: $('input[name=password]').val() }; $.post('/register', postData, function(data){ console.log(data); } }).error(function(err){ console.log(err); }); return false; }, render: function(){ this.$el.html(registerTemplate); } }); return registerView; }); 这是我的应用程序中的请求侦听器。 […]

使用推状态在SEO的木偶应用程序

我做了我的功课,并阅读了关于pushstate的迷你系列: http://lostechies.com/derickbailey/2011/09/26/seo-and-accessibility-with-html5-pushstate-part-2-progressive-enhancement-with-backbone-js/ 从什么理解实施推状态的困难部分是确保我的服务器端将服务于相应的URL的实际页面。 我觉得这将是一个巨大的任务,以前我只是简单地发送一个简单的玉页: body header section div#main footer.site-footer div.footer-icons.footer-element div.footer-element span.footer-link Contact Us span.footer-link Terms of Service script(src='/javascripts/lib/require.js', data-main='/javascripts/application.js') 我正在用我的木偶布局和综合视图做所有的渲染,说实话这有点复杂。 所以从我的理解,我需要复制所有复杂的嵌套/渲染使用服务器端玉,使pushState正常工作? 我在客户端使用了下划线模板,在服务器端重用它们的简单方法是什么?

Marionette.js在'Node'上执行'appendChild'失败:参数1不是'Node'types,

这是我的LayoutView: define(["marionette", "lodash", "text!fonts/template.html", "fonts/controls/view", "fonts/products/view"], function(Marionette, _, templateHTML, ControlsView, ProductsView) { 'use strict'; var FontsView = Marionette.LayoutView.extend({ regions: { controls: '#controls', products: '#products-list' }, template: _.template(templateHTML), onRender: function() { this.getRegion('controls').show(new ControlsView()); this.getRegion('products').show(new ProductsView()); } }); return FontsView; }); 这是我的产品查看: define(["marionette", "lodash", "text!fonts/products/template.html", 'fonts/products/item-view', 'fonts/products/collection'], function(Marionette, _, templateHTML, ProductItemView, ProductsCollection) { 'use strict'; var ProductsView […]