Tag: backbone.js

跟踪收集的旧部分和新部分

我正在使用backbone.js,并且我有一个带有fetch()的集合。 我不想传递选项{add: true}因为我的子视图的创建方式(集合循环遍历,每个项目都是附加到当前表格的新行)。 我试过的一件事就是清空整个表并创建所有新行,但这很慢,因为fetch()经常运行(当滚动接近表的末尾时)。 它开始滞后。 我希望有一个替代方案,我可以跟踪新的集合用于追加目的,但将整个集合作为一个实体。 一种可能性是创建第二个集合,然后将其添加到第一个集合中,但我不确定如何/如果我应该这样做。

使用backbone.js从’d’获取来自ASMX的数据

我是Backbone的新手,我一直在尝试使用它来创建自动完成function,由ASMX Web服务提供。 我似乎遇到的问题是当我的webservice以JSON返回时(在与它进行了一场痛苦的战斗之后),它将响应包装在’d’(数据集)中。 如何让视图理解这一点并获得正确的数据? 这是我的代码: – var Airline = Backbone.Model.extend({ initialize: function () {}, defaults: { name: ‘Airline Name’, rating: 50, icon: ‘/blank.png’ } }); var AirlineCollection = Backbone.Collection.extend({ model: Airline, contentType: “application/json”, url: ‘/ControlTower/public/runway.asmx/all-airlines’, parse: function (response) { return response; } }); var SelectionView = Backbone.View.extend({ el : $(‘#airline’), render: function() { $(this.el).html(“You Selected […]

将您的jQuery代码转换为Backbone.js结构

我对Backbone.js很赞,但我喜欢jQuery。 但是我喜欢Backbone如何将代码组织到模型,视图和集合中,但我仍然无法理解在编写JS代码时如何使用它。 例如,我在jQuery中编写这个简单的代码,当用户键入输入框时,它会附加一个建议框: // this is the model var questions = [ {question: “what is your name”}, {question: “How old are you”}, {question: “what is your mothers name”}, {question: “where do work/or study”} ]; // search data function function searchData(datas,term){ return _.filter(datas, function(obj) { return ~obj.question.toLowerCase().indexOf(term); }); } // Events $(“#suggestinput”).on({ keyup: function(){ var results […]

获得正确目标的Backbone View事件

给出以下简单的html: Some other information 以下Backbone视图: var view = Backbone.View.extend({ events: { ‘click .someContainer’: performAction }, performAction: function (evt) { // Do things here } }); 我发现自己做了以下一些代码,这对我来说似乎是一种代码味道。 有什么我做错了或有更好的方法来做到这一点? …performAction: function (evt) { // Check to see if the evt.target that was clicked is the container and not the h5 (child) if ($(evt.target).hasClass(‘someContainer’)) { // Everything is […]

用Backbone交换视图?

我环顾四周,但还没有找到一个很好的解决方案,以下问题: 我有一个Backbone View绑定到页面上的el,这是一个容器元素,我称之为传统意义上的“侧边栏”(为了解释起见)。 这个侧边栏元素的inner-html需要根据路线完全改变 。 但是, 页面上的位置永远不会更改,并且将始终填充此容器 。 现在,对于一个初始原型,我在这个容器和放在其中的视图之间有一个1:1的关系(我只编写了一条路径)。 然而,现在,根据我提到的路线,所述观点需要改变。 由于这些不同的视图具有完全不同的html标记,对事件的响应等等… 我曾经认为我有理由拥有一个更高级别的视图,可以交换子视图 。 当然,一个可行的解决方案是处理同一视图中的所有内容,但必要的逻辑将是繁琐的(而且非常笨重)。 目前,这就是我的想法(并已部分实施) : 拥有此页面元素的顶级视图。 根据路线,交换必要的子视图。 这些子视图使用dust.js呈现,其中页面上此组件的.html模板通过AJAX延迟加载,编译和缓存。 后续渲染只包括使用新上下文调用缓存的“已编译”函数。 另外,我打算初始化并缓存顶级视图中的每个子视图视图,这样我只是实例化,设置事件处理程序等等一次。 然后,根据路径,查找关联的子视图View(缓存),并将其替换为当前视图。 现在,正如我所提到的,我有这个主要是编码和…半工作。 但是,我正在努力的是如何让每个子视图独立存在并处理交换,但是无论组件当前是否显示,都要保持所有事件处理程序和当前状态继续存在 。 基本上: 如何避免每次需要时完全破坏/重新实例化子视图。 也许这个操作不像我想的那么昂贵,我应该简单地做后者。 作为顶级视图(“经理”,如果你愿意)与容器$ el绑定,如何交换子视图。 我确信这是一个简单,优雅的解决方案。 不幸的是,我还没有找到它。

没有方法’获得’骨干模型保存

我正在使用骨干来制作一个相当复杂的forms。 我有许多嵌套模型,并且一直在计算父模型中的其他变量,如下所示: // INSIDE PARENT MODEL computedValue: function () { var value = this.get(‘childModel’).get(‘childModelProperty’); return value; } 这似乎可以很好地保持我的UI同步,但一旦我打电话 .save() 在父模型上,我得到: Uncaught TypeError: Object # has no method ‘get’ 似乎儿童模型暂时停止响应。 我在做一些内在错误的事情吗? 编辑:堆栈跟踪是: Uncaught TypeError: Object # has no method ‘get’ publish.js:90 Backbone.Model.extend.neutralDivisionComputer publish.js:90 Backbone.Model.extend.setNeutralComputed publish.js:39 Backbone.Events.trigger backbone.js:163 _.extend.change backbone.js:473 _.extend.set backbone.js:314 _.extend.save.options.success backbone.js:385 f.Callbacks.o jquery.min.js:2 f.Callbacks.p.fireWith […]

无法在backbonejs中的集合上使用create方法

我有一个骨干集合,如下所示: app.ledgerList=Backbone.Collection.extend({ model: app.ledger, localStorage:new Store(‘ledgers’) }); ///initializing app.ledgers=new app.ledgerList(); 在我以后的应用程序中的一个观点中,我有: saveLedger: function(){ name=$(“#ledgerName”).val(); email=$(“#ledgerEmail”).val(); address=$(“#ledgerAddress”).val(); phone=$(“#ledgerPhone”).val(); console.log(app.ledgers.length); app.ledgers.create({name:name,email:email,address:address,phone:phone}); } 这将返回我Uncaught TypeError: Object [object Object] has no method ‘apply’在app.ledgers.create({name:name,email:email,address:address,phone:phone})行上Uncaught TypeError: Object [object Object] has no method ‘apply’ app.ledgers.create({name:name,email:email,address:address,phone:phone})可能是什么问题?

Backbone Model里面的validation方法没被调用?

开始学习Backbone,尝试在我的Person Model中进行一些简单的validation,但是当我设置一个新的年龄时,似乎没有运行validate方法。 任何人都可以解释我可能在哪里出错吗? 在我做对了之前,不要继续我的学习。 JS var Person = Backbone.Model.extend({ defaults: { name: ‘John Doe’, age: 30, occupation: ‘working’ }, validate: function(attrs) { console.log(attrs); if ( attrs.age < 0 ) { return 'Age must be positive, stupid'; } if ( ! attrs.name ) { return 'Every person must have a name, you fool.'; } }, work: […]

IBM Worklight 6.1 – 未捕获的ReferenceErrors:未定义WLJQ,未定义WL

我正在使用Eclipse Juno中安装的IBM Worklight Developer Edition 6.1作为我的IDE和backbonejs作为我项目的主要javascript框架。 我的index.html <!– window.$ = window.jQuery = WLJQ; 我的main.js require.config({ paths: { jquery: ‘libs/jquery/jquery-min’, underscore: ‘libs/underscore/underscore-min’, backbone: ‘libs/backbone/backbone-min’, templates: ‘../templates’, bootstrap: ‘bootstrap.min’, initOptions: ‘initOptions’, biiRibMobile: ‘biiRibMobile’, messages: ‘messages’ }, }); require([‘app’, ], function(App) { App.initialize(); }); 我的app.js. // Filename: app.js define([‘jquery’, ‘underscore’, ‘backbone’, ‘router’, // Request router.js ‘bootstrap’, ‘initOptions’, ‘biiRibMobile’, […]

在backbone.js中绑定和_.bindAll

我对_bind.All中绑定和_bind.All的目的感到困惑。 下面是一个工作代码,它创建一个模态视图#modal并呈现从后端获取的注释。 首先,在下面的代码中,我有initialize函数_.bindAll(this, ‘render’, ‘renderComments’); 。 无论我是否_.bindAll() ,我都可以在initialize()调用this.render()和this.renderComments() initialize() 。 是否有任何关于_.bindAll()何时会帮助我们以及何时不会帮助我们的例子? ModalView = Backbone.View.extend({ el: $(‘#modal’), template: _.template( $(‘#tpl_modal’).html() ), initialize: function() { _.bindAll(this, ‘render’, ‘renderComments’); this.render(); this.renderComments(); }, render: function() { $(this.el).fadeIn(‘fast’).append( this.template( this.model.toJSON( this.model ) ) ); }, renderComments: function() { this.commentList = new CommentCollection(); var self = this; this.commentList.fetch({ data: { post_id: […]