Tag: backbone.js

点击后触发骨干事件或按回车键

我是骨干的新手,我正在寻找一种方法,当我按下Enter键并单击时触发我的按钮。 目前showPrompt仅在单击时执行。 什么是最干净的DRYest方式,让它在按Enter键时执行,最好只用于输入字段。 (function () { var Friend = Backbone.Model.extend({ name: null }); var Friends = Backbone.Collection.extend({ initialize: function (models, options) { this.bind(“add”, options.view.addFriendLi); } }); var AppView = Backbone.View.extend({ el: $(“body”), initialize: function() { this.friends = new Friends(null, {view: this}); }, events: { “click #add-friend”: “showPrompt”, }, showPrompt: function () { var friend_name = […]

在JQuery移动UI中禁用散列更改控制器并替换为backbone.js

我正在使用JQuery Mobile UI ,widgit工具包很不错。 但是我也在使用backbone.js,它带有一个非常整洁的hashchange控制器框架。 问题是JQuery Mobile UI有一个内置的糟糕的哈希变更控制器,假设你总是希望对每个哈希变化进行AJAX查询并从服务器加载内容。 从JQuery Mobile UI中拔出小部件框架是否有任何成功?

在嵌套对象中搜索文本(Backbone.js集合作为示例)

我有一个backbone.js集合,我需要在其上进行全文搜索。 我手头的工具如下: Backbone.js,underscore.js,jQuery 对于那些不熟悉骨干的人: 骨干集合只是一个对象。 在集合内部有一个带模型的数组。 每个模型都有一个包含属性的数组。 我必须在每个属性中搜索字符串。 我用的代码是: query = ‘some user input’; query = $.trim(query); query = query.replace(/ /gi, ‘|’); var pattern = new RegExp(query, “i”); // this.collection.forEach is the same as _.each // only it get’s the models from the collection this.collection.forEach(function(model) { var check = true; _.each(model.attributes, function(attr){ if(pattern.test(attr) && check){ […]

删除对backbone.router和视图的jquery / zepto依赖性

是否存在分支/维护的主干版本,完全不需要jquery或zepto来同时使用路由器和视图? 我不介意使用主干但是我没办法在我的页面上强制使用jquery依赖只是为了使用它。 如果解决方案不存在,有人可以发布需要更改的内容的要点吗?

Backbone.js查看实例变量?

我正在学习Backbone.js并试图弄清楚是否可以在Backbone视图中使用实例变量。 我的目标是在实例化视图时从外部文件加载视图的模板。 目前我将它们存储在Backbone应用程序的全局命名空间中的全局变量中,但将模板存储在视图的实例变量中会更简洁。 目前我的设置如下: var templates = {}; MessageView = Backbone.View.extend({ initialize: function() { $.get(‘js/Test2Templates.tpl’, function(doc) { var tmpls = $(doc).filter(‘template’); templates[‘MessageView’] = []; tmpls.each(function() { templates.MessageView[this.id] = $.jqotec($.unescapeHTML(this.innerHTML)); }); }); }, render: function() { var tpldata = {name: ‘Ville’, thing: ‘Finland’}; $(‘#display’).jqoteapp(templates.MessageView.greeting_template, tpldata); }, events: { “click input[type=button]”: “additionalTransactions” }, additionalTransactions: function() { this.render(); […]

Backbone.js Collection和Tastypiefilter

我没有为我定义的Backbone集合检索整个记录表,而是认为使用我创建的美味馅饼filter效率更高。 我如何让Backbone使用它们? 据我所知,Backbone模型/集合仅指向模型的顶级URI。 例如,我有一个在Django中定义的Bookings模型,可以通过“/ api / booking”访问,但我想用“/ api / booking?room = 3”填充Backbone Collection,其中房间号是特定于上下文的。

在主干/下划线的模板中使用循环

我有一个backbone.js / underscore.js模板,我正在进入一个骨干视图进行渲染。 View传递的模型包含一个对象的数组posts (我在模板中称为post )。 问题 :当我尝试循环遍历数组posts所有元素时,我得到一个错误Uncaught SyntaxError: Unexpected token )并在主干View视图的代码template: _.template( $(‘#tpl_SetView’).html() )引用一行template: _.template( $(‘#tpl_SetView’).html() ) 。 我是否错误地循环,导致此错误? 模板代码 <img src="/” width=240 /> <img src="” width=55 />

为什么在Backbone.js中第二次渲染后事件没有触发?

我在Backbone.js中创建了一个具有父视图和多个子视图的应用程序。 子视图包含他们收听并执行function的链接。 父级存储所有子视图的列表。 在render函数中,在完成计算自己的html之后,它会执行以下操作: $(this.el).html(html); for (var i = 0; i < this.views.length; i++){ $('.children', this.el).append(this.views[i].render().el); } 答案:问题是我在渲染过程中创建了链接。 即第一次渲染(从init调用),事件成功绑定到链接。 但是,由于所有后续的render调用都会重新创建整个元素,因此新链接没有绑定到它的处理程序。 这是通过@Tom Tu解决方案解决的,该解决方案将this.delegateEvents()添加到渲染中

Backbone Marionette,Composite View初始化两次

我正在使用一个复合视图,其中$ .dialog调用了它的$ el。 然后,合成视图将列出集合中的项目。 现在我已经尝试了多种方式来渲染集合项:在将视图附加到视图之前和之后从复合视图外部获取,在视图内部获取,从我的服务器脚本预加载集合等等… 一切似乎都有效,但同样的问题发生.. 一旦复合视图看到这个集合,它就会再次调用它自己的初始化函数…… 我完全理解渲染函数将在集合重置或添加时调用…但是初始化??? 我完全不知道为什么会这样。 showCustomFieldSelect: function(e){ log(‘triggered’); e.preventDefault(); var cl = new AustApp.Collections.CustomField; var select = new AustApp.Views.AvailableCustomFieldsList({ el: “#available-custom-fields-popup”, collection: cl }); cl.fetch(); cl.once(“reset”, function(){ // this bind was // previously used for creating the view // or calling render functions directly // amongst numerous efforts to debug }, […]

如何将Backbone.View绑定到DOM中类似元素列表中的“单个”DOM元素

我有以下页面结构: Label 1 Label 2 … … … … 这是过于简单化的视图: var MyView = Backbone.View.extend({ el:$(‘.listOfPosts’), initialize: function() { _.bindAll(this,”postClicked”); }, events: { “click .wcCheckbox”:”postClicked” }, postClicked: function() { alert(“Got aa click in the backbone!”); } }); 问题:我想知道被点击的post的数据ID。 使用简单的JQuery,我可以执行以下操作: $(‘.wcCheckbox’).live(‘click’ function() { alert(“Data id of post = “+$(this).parents(‘.WCPost’).data(‘data-postId’)); } 现在我知道Backbone会执行事件委托,所以它需要el属性中的DOM引用。 如果我给它.listOfPosts然后事件似乎完全开火但是要检查“哪个”post我将不得不继续遍历DOM并挑选出被选中的元素! 在我看来这将是相当昂贵的! 我如何在Backbone中为每个post做这个? 即,如何将视图绑定到每个单独的li.WCPost ?? 注意:我不是使用普通的vanilla […]