Questions tagged «backbone.js»

Backbone.js是一个具有RESTful JSON接口的JavaScript框架,它基于模型-视图-呈现器(MVP)应用程序设计范例

6
Backbone.js:获取当前路线
使用Backbone,我能否获得当前路线的名称?我知道如何绑定到路线更改事件,但是我希望能够在其他时间确定更改之间的当前路线。
137 backbone.js 

10
如何在Backbone.js中呈现和附加子视图
我有一个嵌套视图设置,可以在我的应用程序中深入了解。我可以想到很多初始化,渲染和附加子视图的方法,但是我想知道什么是常见的做法。 这是我想到的几个: initialize : function () { this.subView1 = new Subview({options}); this.subView2 = new Subview({options}); }, render : function () { this.$el.html(this.template()); this.subView1.setElement('.some-el').render(); this.subView2.setElement('.some-el').render(); } 优点:您不必担心通过追加来维护正确的DOM顺序。视图是在很早的时候初始化的,因此在render函数中没有太多事情可以一次完成。 缺点:您被迫重新委托delegateEvents(),这可能会很昂贵?父视图的渲染功能杂乱无章,需要进行所有子视图渲染?您没有设置tagName元素的能力,因此模板需要维护正确的tagName。 其他方式: initialize : function () { }, render : function () { this.$el.empty(); this.subView1 = new Subview({options}); this.subView2 = new Subview({options}); this.$el.append(this.subView1.render().el, this.subView2.render().el); …

8
“单页” JS网站和SEO
如今,有许多很酷的工具可用于创建功能强大的“单页” JavaScript网站。在我看来,这是通过让服务器充当API(仅此而已)和让客户端处理所有HTML生成内容来正确完成的。这种“模式”的问题是缺乏搜索引擎支持。我可以想到两种解决方案: 当用户进入网站时,让服务器完全按照客户端在导航时的方式呈现页面。因此,如果我http://example.com/my_path直接进入服务器,它将呈现与客户端/my_path通过pushState 呈现的事物相同的东西。 让服务器仅为搜索引擎机器人提供一个特殊的网站。如果普通用户访问http://example.com/my_path服务器,则应向他提供该网站的JavaScript重型版本。但是,如果Google漫游器访问,服务器应为其提供一些最小的HTML,其中包含我希望Google索引的内容。 第一种解决方案将在此处进一步讨论。我一直在一个网站上这样做,这不是一个很好的体验。它不是DRY,在我的情况下,我必须为客户端和服务器使用两个不同的模板引擎。 我想我已经看到了一些不错的Flash网站的第二种解决方案。与第一种方法相比,我更喜欢这种方法,并且在服务器上使用正确的工具可以轻松完成。 所以我真正想知道的是以下内容: 您能想到更好的解决方案吗? 第二种解决方案的缺点是什么?如果Google以某种方式发现我没有像普通用户一样为Google机器人提供完全相同的内容,那么我将在搜索结果中受到惩罚吗?

12
下划线中的外部模板
我使用Underscore模板。是否可以将外部文件作为模板? 在骨干视图中,我有: textTemplate: _.template( $('#practice-text-template').html() ), initialize: function(){ this.words = new WordList; this.index = 0; this.render(); }, 在我的html中是: <script id="practice-text-template" type="text/template"> <h3>something code</h3> </script> 它运作良好。但是我需要外部模板。我尝试: <script id="practice-text-template" type="text/template" src="templates/tmp.js"> 要么 textTemplate: _.template( $('#practice-text-template').load('templates/tmp.js') ), 要么 $('#practice-text-template').load('templates/tmp.js', function(data){ this.textTemplate = _.template( data ) }) 但它没有用。

1
Backbone.js:如何获取Backbone集合中模型的索引?
有没有一种方法可以在集合中找到模型的索引? 假设某个视图中有一个我们正在处理的模型,那么该模型可以将其索引插入到当前位于其中的集合中吗?我想这样做是因为我想访问当前目标之上或之下的模型。 换句话说,是这样的: index = this.model.index modelAbove = this.collection.at( index-1 ) 我的数据是一个嵌套集,因此我只能在“ lft”或“ rgt”列上进行搜索,但是如果Backbone已经有了此信息,我就不想重新发明轮子。
119 backbone.js 

12
Backbone.js中的嵌套模型,如何处理
我从服务器提供了以下JSON。这样,我想创建一个带有嵌套模型的模型。我不确定哪种方法可以实现这一目标。 //json [{ name : "example", layout : { x : 100, y : 100, } }] 我希望将它们转换为具有以下结构的两个嵌套主干模型: // structure Image Layout ... 因此,我定义了Layout模型,如下所示: var Layout = Backbone.Model.extend({}); 但是,我应该使用以下两种(如果有)技术来定义图像模型?下面是A还是B? 一个 var Image = Backbone.Model.extend({ initialize: function() { this.set({ 'layout' : new Layout(this.get('layout')) }) } }); 或 B var Image = …

15
骨干网视图:从父级继承并扩展事件
骨干网的文档指出: events属性也可以定义为返回事件哈希的函数,以使其更易于以编程方式定义事件以及从父视图继承它们。 您如何继承父项的视图事件并扩展它们? 父视图 var ParentView = Backbone.View.extend({ events: { 'click': 'onclick' } }); 儿童观 var ChildView = ParentView.extend({ events: function(){ ???? } });

8
如何在model.save()上触发成功回调?
this.model.save({ success: function(model, response){ console.log('success'); }, error: function(){ console.log('error'); } }) 该模型已正确发布到处理保存的服务器,但未触发成功回调。我需要从服务器发回东西吗?
106 backbone.js 

9
Backbone.js获取并设置嵌套对象属性
我有一个关于Backbone.js的get和set函数的简单问题。 1)使用下面的代码,如何直接“获取”或“设置” obj1.myAttribute1? 另一个问题: 2)在模型中,除了默认对象之外,我还可以/应该在哪里声明模型的其他属性,以便可以通过Backbone的get和set方法访问它们? var MyModel = Backbone.Model.extend({ defaults: { obj1 : { "myAttribute1" : false, "myAttribute2" : true, } } }) var MyView = Backbone.View.extend({ myFunc: function(){ console.log(this.model.get("obj1")); //returns the obj1 object //but how do I get obj1.myAttribute1 directly so that it returns false? } }); 我知道我可以做: this.model.get("obj1").myAttribute1; …

3
Backbone.js:“ extend”未定义?
刚开始使用Backbone.js。仅包含Backbone(开发/生产版本)将导致错误: Uncaught TypeError: Cannot call method 'extend' of undefined 在第128行: // Attach all inheritable methods to the Model prototype _.extend(Backbone.Model.prototype, Backbone.Events,

8
组织jQuery / JavaScript代码的最佳方法(2013)[关闭]
在这里很难说出要问什么。这个问题是模棱两可的,模糊的,不完整的,过于宽泛的或修辞性的,不能以目前的形式合理地回答。如需帮助澄清此问题以便可以重新打开, 请访问帮助中心。 7年前关闭。 问题 这个答案以前已经被回答过,但是它是旧的并且不是最新的。我在一个文件中有2000行以上的代码,众所周知,这是一种不好的做法,尤其是当我浏览代码或添加新功能时。无论现在还是将来,我都希望更好地组织代码。 我应该提到的是,我正在构建一个工具(不是简单的网站),该工具在全局范围内具有许多按钮,UI元素,拖放,动作侦听器/处理程序和功能,其中多个侦听器可能使用同一功能。 范例程式码 $('#button1').on('click', function(e){ // Determined action. update_html(); }); ... // Around 75 more of this function update_html(){ .... } ... 更多示例代码 结论 我确实需要组织此代码以使其最佳使用,而不是重复自己,并且能够添加新功能并更新旧功能。我将自己解决这个问题。有些选择器可能是100行代码,另一些则是1行。我看了一眼require.js,发现它有些重复,实际上编写了比所需更多的代码。我愿意接受任何符合此条件的解决方案,并且链接到资源/示例始终是一个加号。 谢谢。

3
RESTful后端的Ember.js或Backbone.js [关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我已经知道ember.js是一种与ribs.js相比更为繁重的方法。我读了很多有关这两者的文章。 我问自己,哪个框架更容易作为Rails后端的前端。对于bone.js,我看到了不同的方法来调用rest后端。对于余烬来说,我似乎必须包括更多的库,例如“数据”或“资源”。为什么要为此设置两个库? 那么,更好的选择是什么呢?也有很多示例将前端与后端连接起来。后端REST调用的一个很好的工作示例是: URI:../restapi/topics GET身份验证凭据:admin / secret格式:json

3
骨干。查看“ el”混乱
应该如何el处理视图?必须设置它,否则事件不会触发(请参阅此处)。 但是它应该是页面上已经存在的元素吗?在我的应用程序中,我将(jQuery模板)模板渲染到Fancybox中。el在那种情况下应该是什么?

4
如何在模型获取时将1转换为true或0转换为false
我有一个使用mysql数据库的JSON响应设置的模型。将模型数据使用true或false设置到数据库中的布尔值/ tinyint字段中,该字段使用1或0。 在我看来,我有一个绑定检查下划线的布尔值_.isBoolean。当然,当我的模型接收到数据时,将其设置为true或false 1或0代替true或false进行_.isBoolean检查。 无论如何,是否可以正确地使来自mysql的JSON响应成为布尔值true或false而不是1or 0,或者最好是有一种方法使我的模型在获取时(以及在视图呈现之前)进行更新以进行铸造true或false基于这是1还是0属性? 例如我模型的数据看起来像{"isChecked":"1"}我需要的时候{"isChecked":true} 非常感谢您提出的任何建议!

3
骨架.js-事件,知道点击了什么
在我的骨干.js视图类之一中,我有类似以下内容: ... events: { 'click ul#perpage span' : 'perpage' }, perpage: function() { // Access the text of the span that was clicked here // Something like: alert($(element).text()) }, ... 因为我的每页标记可能类似于: <ul id="perpage"> <li><span>5</span></li> <li><span>10</span></li> </ul> 那么,如何准确找到有关导致事件的元素的信息?还是在这种情况下被点击?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.