Backbone.js 如何处理带有主干的单页应用程序的UI状态

请容忍我,因为我来自传统的web开发背景,使用ASP.Net,甚至服务器端MVC。我正在尝试使用Backbone.js构建一个高度交互的单页应用程序,以帮助组织我的javascript代码并构建UI 我在构建UI组件以及决定如何处理某些方面的一些概念或方法上遇到了问题。我将使用这个过于简单的屏幕截图作为我提问和讨论的基础 让我们以“待办”应用程序为例(当然),UI非常简单。我有以下“组件” 一个结果列表,显示与当前选定条件匹配的当前待办事项集 我的待办事项列表(个人、工作、博客项目) 到期日

backbone.js集合在创建时是否添加空元素?

我假设这要么是我代码中的一个bug,要么是backbone.js的一个未记录(据我所知)特性。当我创建我的集合和视图时,集合中已经有一个模型我没有创建,或者我假设由于未定义的id我没有创建。下面是我的代码 // ---------------------------------------------------------- Work Order window.WO = Backbone.Model.extend({ default: { wonum: null,

Backbone.js 如何将多个模型/集合添加到主干视图?

将集合添加到视图时,如下所示: var View = new MyCollectionView({ collection: new MyCollection() }); new View({collection: c}) new View({collection: c, secondCollection: c2}) 一切都很好。我可以在initialize方法中使用此集合(例如,对于绑定事件)。但是我怎样才能再加一个呢 我不能这样做: var View = new MyCollection

如何在Backbone.js中触发主干路由器事件?

js中的路由器负责路由客户端页面,并根据URL将它们连接到操作和事件。但是如何触发url更改呢?我的意思是,如果唯一的方法是将与页面路由相关联的元素包含在标记中 因为我已经将mousedown和mouseup事件与用于路由的元素相关联,如果我将其放入标记中,mousedown和mouseup事件肯定会变得无效,因为它将与标记的click事件相冲突。那么,还有其他方法进行路由吗?您可以使用: 导航路由器。导航(片段,[选项]) 每当您在应用程序中到达要另存为URL的点时,请调用导航,以更新URL。

使用backbone.js在视图中收听body单击

我正在创建一个这样的模态对话框 window.NewPageModalView = Backbone.View.extend({ template: _.template($('#view-template-new-page-dialog').html()), el: $('div#main'), events: { 'click input[type=radio]': 'newPage' }, newPage: function

Backbone.js 如何从下划线.js javascript模板库中引用名称中带有句点的JSON属性

我正在使用下划线模板引擎(作为Backbone.js的一部分),但JSON对象的属性中有一个句点,即 { "id": 1234, "company.id": 4321 } 当我尝试在下划线模板中访问此内容时,我收到一个JavaScript错误: Company ID: <@= company.id @> 公司ID: 我想知道是否可能以及如何访问带有句点的属性。我无法更改JSON的生成 cowper一种简单的方法是将另一个对象包裹起来,这样您就可以使用[]访问'company.i

Backbone.js 更新集合中模型的索引

我有一个歌曲列表(每首歌都以专辑封面的形式),可以通过jQueryUI的可排序库进行排序(http://jqueryui.com/demos/sortable/). 所有歌曲都是驻留在单个集合中的模型。当触发“排序”事件时,我想重新计算歌曲的顺序并更新它们各自的索引。我知道如何获取集合中模型的索引,但是否可以更新/设置模型的索引?我意识到我可以在模型上设置一个“order”属性并进行更新,但似乎更新索引会更干净。听起来你想在集合上定义一个,然后在启动小部件的排序事件时调用它。再次查看了该函数,你

Backbone.js 主干网中的信息到哪里去了?

当保存或创建被抛向服务器时,服务器会使用随机创建的新对象进行响应。对象可以是许多不同类中的一个,主干响应这些不同的对象并加载一个相对视图 我似乎只能在bootstrap上理解这个逻辑,因为还没有加载任何视图,所以我可以根据随机从服务器接收到的信息,引导并导航到特定路径 然而,当我保存一个对象并接收返回数据时,我一直在试图弄清楚如何做到这一点 这是我的密码 信息已保存。 @model.save(@model.toJSON(), 我有一位听众正在等待此保存: constructor: (optio

Backbone.js CompositeView和;CollectionView?

我发现两者的属性和功能几乎相同,那么这两者的主要区别是什么呢 简言之,如果要在集合周围包装模板(例如:带有页眉和页脚的列表),则需要使用CompositeView。CollectionView不知道如何呈现模板。 版本2.x有许多不同类型的视图:视图、项目视图、, LayoutView、CollectionView、CompositeView 在版本3中,ItemView和LayoutView被“合并”到视图中,并且 不推荐在v4中删除CompositeView。现在我们只有一个观点 和Coll

Backbone.js:this.collection.models返回空数组

我使用Backbone.js显示API请求中的项目(站点)列表 我的问题被问了很多似乎,我已经尽可能多地考虑了其他问题的解决方案,但我仍然有一个问题 代码如下: (function($) { _.templateSettings = { interpolate: /\{\{(.+?)\}\}/g }; // models var Station = Backbone.Model.extend({ urlRoot: '../api/admin/s

Backbone.js 在主干js事件回调函数中查找触发的事件

有一种方法可以做到这一点,那就是在eventDataForevt\uu中有一个属性,表示事件的名称。但是,是否可以在不修改eventDataForevt\uu的情况下执行此操作?查看此小提琴: 在上,似乎无法从您的对象中检测到事件名称-请注意,在这种情况下,事件为真,即使未调用evt\u c 但是,有一个函数将调用事件的名称作为第一个参数传递,因此 obj.on('evt_A evt_B evt_c', function(eventData){ console.log("Is it possib

Backbone.js Marionette.js:区域是否应该替换而不是插入?

js的默认行为是将模板附加到区域选择器指定的元素中。然而,我通常不得不创建一个特殊的区域类型,并重写appendHtml函数来替换 这并不太难,但是为什么要将append作为默认值呢 我通常会用一个空div来创建布局模板,以指定区域应该去哪里。然后,在显示该div时,将其替换为子模板 我想我想知道我是否缺少模板的设计模式,使附加更直观 谢谢你的帮助 更新: 所以我通常会看到一些我想呈现到页面中的内容,并希望在我想要的页面上添加n元素。我将使用如下所示的javascript: ReplaceReg

Backbone.js-在Safari中显示视图时出现问题

我有一个应用程序,旨在重新创建一个标准的网站,包括标准页面和一个新闻模块,其中列出了类别和文章。访问新闻时,将显示新闻页面中的内容,以及类别列表或文章列表。在这种情况下,当您查看新闻页面时,将显示(2)个类别 在Chrome、Firefox和IE上,我可以在我的页面之间单击,然后返回到新闻——进入类别、项目列表,然后是文章,然后返回到主条目新闻页面。视图(用于主条目页面)始终显示正确的HTML。然而,在Windows和ipad上的Safari中,虽然一切都会好一点,但最终(或者更早!)新闻条目页

Backbone.js-值不会从一个视图传递到另一个视图

当我试图将条目变量从一个视图传递到另一个视图时,我得到的条目在第二个视图中是未定义的 这是我的观点 append_post: function(post){ view = new Stream.Views.PostEntry({entry: post}); $("#stream-bank").append(view.render().el); } 这是我的入职后视图 Stream.Views.PostEntry = Backbone.View.extend({

Backbone.js 主干视图将值传递给另一个视图

MenuView.js events: { "click ul li": "MenuClick" }, MenuClick: function (e) { var elm = e.currentTarget; return elm.firstChild.innerText; }, define(['underscore', 'backbone', '../Collection/MenuCol'], function (_, Backbone, MenuCol) { var

为什么在backbone.js的导航函数中调用trigger:true被认为是不好的做法?

我在几个地方读到过,调用Backbone.history.navigate函数被认为是不好的做法 例如,Addy Osmani sais在他的书《开发主干网.js应用程序》中写道 Router.navigate()也可以触发沿途的路由 通过传递trigger:true选项更新URL片段。 注意:不鼓励这种用法 或者德里克·贝利在他甚至说: 大多数情况下,您不应该从应用程序中执行路由的处理程序 但我真的不明白背后的原因,还有什么更好的解决办法 在我看来,使用trigger:true选项调用nav

Backbone.js 主干验证不适用于保存

我有一个使用Backbone.Validations插件的简单模型 var LocationModel = Backbone.Model.extend({ validation: { location_name: { required : true, msg : 'A name is required for the location' } } // end validation }); var test = new Lo

Backbone.js 如何正确使用木偶布局?

我当前的代码如下所示: define([ 'jquery', 'underscore', 'backbone', 'marionette', 'templates', 'gridView', 'detailView', 'detailModel' ], function ($, _, Backbone, Marionette, JST, GridView, DetailView, DetailModel) { 'use s

Backbone.js 将模型集合绑定到表

所以我今天第一次开始研究backbone.js。我最想做的事情之一就是将模型属性绑定到有用的控件上。我的问题实际上是如何将各个模型属性绑定到控件 我举了一个例子,在这个例子中,您可以将任何模型的集合绑定到一个表,选择要忽略的属性,但是我觉得我没有采取正确的方法。我们的想法是最终扩展它,使表像数据网格一样可编辑。我已将此添加到JSFiddle@ 我使用助手函数为模型生成模板。这用于生成表格标题和行数据 //helper function to loop through a model's att

Backbone.js 如何处理主干js中的归属关系

我有两个模型,用户和图片。用户有很多图片。我想对图片的后端服务器查询进行挂起调用。当前,当我点击暂停按钮时,我得到了用户模型,但我想要图片模型。在我的用户视图中,我有以下代码 用户视图 class MyApp.Views.User extends Backbone.View initialize: -> @listenTo(@model, 'change', @render) @listenTo(@model, 'destroy', @remove) rend

Backbone.js 服务器上的主干存储模型

我是个新手。我试图在服务器上保存模型,但它给了我 错误: [HTTP/1.1 403 Forbidden 1010ms] 我缺少什么 我的代码是: <script type="text/javascript" > var UserModel = Backbone.Model.extend({ url:'http://192.168.1.3:8080/app/profile/astro' }); var user=new UserModel();

Backbone.js 主干正在模型URL中插入查询字符串。我该怎么阻止它?

我有一个像这样的主干模型 我有一个模板,可以在表单中打印出地址。模板由在其“render”函数中传递地址id的视图呈现。通过类似于“address/:id”的路由到达视图 视图如下所示: var AddressView = Backbone.View.extend({ el: $('#myclass'), render: function(options) { var that = this; var addr = new A.add

Backbone.js 如何在backboneJS视图上使用事件

所以我试图学习如何使用 但是我被困在事件部分,当我点击页面类内容时,它应该会提醒“页面标记已被点击”,但它会在注释行上抛出一个错误 <body> <div class="page"></div> </body> <script type="text/javascript"> var View = Backbone.View.extend({ initialize: function()

Backbone.js 木偶js路由-我在这里做错了什么?I';我发现路由操作未定义的错误?

只是想得到一些基本的路由和运行。看过很多例子后,我认为下面的代码应该可以工作,但是当我运行时,我得到一个错误“无法获取未定义或空引用的属性'doChat'。初始化顺序是否有误 require(["marionette", "jquery.bootstrap", "jqueryui"], function (Marionette) { window.App = new Marionette.Application(); App.start();

Backbone.js 使主干.视图选项成为必需选项

我是主干网新手,我发现自己编写的视图依赖于选项的值来正常工作。换句话说,我的选项是强制性的。这听起来不对,所以我想知道我是否误用了选项参数,如果是这样,还有什么更好的方法呢?依赖注入是一种不错的做法。这实际上是一种常见的做法,尤其是处理视图。它还使您更容易对视图进行单元测试。因此,使用选项获取构建视图所需的一些属性完全可以。也许你可以分享一些你认为错误的例子

Backbone.js BackboneJS+;洛达斯联合法

在我的主干应用程序中,我正试图使用Lodash(下划线)中的..union-方法合并集合 因此,我有以下几点: var myCollection = _.union([carsCollection], [motorcycleCollection], [bikeCollection]); 当我执行console.log(collection)时,它会给我[child,child,child],其中每个子包含集合中的模型数组及其属性。到目前为止,我的问题是: 如何在视图中显示此内容?我试过: th

Backbone.js 模块化木偶应用

在编写主干/木偶应用程序之前,我正在尝试构建它。我真的想让它变得非常模块化(也就是说,我希望能够为网站拉一些嵌套的功能并插入它们。我希望所有的路由都能立即初始化,这样我就可以为页面添加书签了。不过,我正在努力设置它 是否有人找到了一个好方法来设置一个应用程序,在这个应用程序中,审批者可以加载模块中的所有路由,但可以有效地延迟加载其余内容?很难用任何简短的形式来解释。我强烈建议观看backbonerails.com的所有剧集。他展示的方式非常棒如何模块化你的应用

Backbone.js 从主干中一系列独特的动态按钮中获取按钮的id

我有一个按钮列表,而这些按钮是通过车把模板显示的 <button class="providesolution" id="btn{{issue_id}}" ><small>Post</small></button> 我尝试了很多方法来获取id,但它显示未定义。 有人能帮我吗? 提前感谢。主干将事件作为第一个参数传递给事件处理程序,您可以从事件数据结构中获取导致事件的元素,如下所示: providesolution: function(e) {

Backbone.js 在木偶网中,如何将消息从视图函数发送到路由器?

我正在使用Browserify(有点像AMD) 在查看事件处理程序时,在验证密码后,我想向路由器发送一条消息“login\u success”,以更改路由 在路由“login_success”处理程序中,我想调用route.navigate(“/newRoute”),它是从主干扩展的函数 但我还没有弄清楚如何将消息从视图发送到路由器。任何人都可以共享示例代码或链接吗 在主干网中是否有更改路由的最佳实践 谢谢 最直接的方法就是使用 如果你希望有一些地方导航机构,你可以 App.execute("n

Backbone.js Backebone.Marionette错误类型Error view.on不是函数

我一直在使用带提线木偶的主干来服务我的单页web应用程序,但如果在视图中出现此错误。核心控制器和助手中的一切都很好,但却出现了此错误 TypeError: view.on is not a function in backbone.marionette 我的代码是用咖啡脚本编写的这是我在helpers中使用的代码块 class AppHelper home: ()-> require['cs!views/home', 'cs!main'], (Home, App)->

Backbone.js 在不同URL上运行主干应用程序

主干路由器是否可能识别出它运行的URL是不同的 我需要在散列爆炸之前更改应用程序的行为 /成员#登录 vs /成员/利益#关于(需要应用程序在此处表现不同)如果您想根据不属于散列的url控制应用程序的行为,您应该使用。否则主干路由器只处理散列后的部分。在这种情况下,您可以自己实现逻辑。可能的重复不是重复。我不是在问主干网能否在hashbang之前检测到路由。不是如何获取window.location.href.Backbone是一个JS库,使用JS在URL中获取您想要的任何内容并从那里开始。这里

RESTful api存在Backbone.js model.save()问题

我有一个使用api保存到数据库的模型。我的问题是更新此模型时。第一次更改任何内容并调用model.save时,属性将作为JSON传递给api,api将解析并保存它,而不会出现任何问题。现在,我第二次在同一视图中对该模型进行更改时,model.save将一个未定义的对象添加到我的模型中。api看到此对象并拒绝PUT请求 为什么它与第一次更新一起工作,而与第二次更新不一起工作 谢谢你的帮助 这是代码,希望你能理解 var LDAccount = Backbone.Model.extend({

Backbone.js将集合拆分为块

我有一个滑块,每个滑块包含6个视频,所以我有一个视频集合 现在,我需要将集合拆分为块,每个块有6个视频,并为每个块渲染一个视图(一张幻灯片) 我对此有点困惑,因为我对主干网还不熟悉,我发现主干网中很少有“正确”的做事方式 我的解决方案:(感谢Josh Leitzel) 第一张幻灯片显示3个视频,每隔6个 render: -> $(@el).html(@template()) count = 0 passed_first_slide = false win

Backbone.js Zombie.js在提交主干表单时表现不佳

不确定它是在我这边还是在zombie.js上,但我似乎无法让这个非常简单的zombie.js脚本在我的主干应用程序上运行。是完全出于我的考虑,还是zombie.js在主干应用程序中表现不佳是一个众所周知的问题?我也在用战俘http://pow.cx/ 在相关的情况下,通过myapp.dev连接到应用程序 任何建议或带有主干的zombie.js示例都将非常有用 Browser = require "zombie" assert = require "assert" browser = new B

Backbone.js 使用requirejs的主干应用程序模式

我偶然发现了一些带有requirejs的主干应用程序。有一件事看起来很奇怪。无论何时他们需要在我的模块中引用主干、下划线或jquery,我都必须要求他们: define([ 'jQuery', 'Underscore', 'Backbone', 'collections/projects', ], function($, _, Backbone, ProjectsCollection, projectsListTemplate){ var projectListView =

Backbone.js 在主干模型中使用标志,但不作为属性(保存)

因此,我试图实现的是,当用户想要编辑/查看一个项目(模型)时,我将它们发送到一个URL,创建一个新的模型实例并调用。在加载相关视图并将其交给新模型之前获取它 出于各种原因,我需要知道用户是否正在编辑或查看项目(模型),因此我的第一次尝试是: app.Models.Quote = Backbone.Model.extend({ idAttribute: 'Number', initialize: function() { this.editMode = fals

Backbone.js 主干及;Require:Require块中设置的模型属性not";粘住;不受限制

我有一个主干模型,它通过requirejs加载了一些依赖项。我用这种方式处理它,是为了绕过Require.js的循环依赖性问题。(我们有多个需要模型、集合和视图的文件,其中一些是循环文件。) 问题在于,模型上设置的属性(this)在require语句之外显示为未定义的属性。代码如下: define(["jquery", "backbone"], function($, Backbone) { var Model = Backbone.Model.extend({ ini

Backbone.js 简单主干事件不触发

我第一次使用backbone.js,但无法正常启动事件。有人能解释一下我做错了什么吗 非常感谢 在“我的html”底部加载的app.js中: var Discussion = Backbone.Model.extend({ defaults: { id: null, title: 'New discussion' }, urlRoot: '/api/discussion' }); var DiscussionCollection = Ba

Backbone.js backbonejs collection.fetch错误处理程序

下面的backbone collection.fetch代码会因某种原因触发错误,然后跳转到错误处理程序(如预期的那样),但我不知道errorhandler参数是什么。触发错误时,模型、xhr和选项参数未定义。我做错了什么 var onErrorHandler = function(model, xhr, options) { alert(options); }; that.collection = new MembersCollection([]); that.

Backbone.js 用模块定义扩展木偶应用程序

我一直在使用木偶网编写我的应用程序,但我对应用程序扩展失败感到有点困惑 在木偶中似乎没有办法做这种事情: var SuperApplication = Backbone.Marionette.Application.extend({ 'modules': { 'foo': function (module, app) { // module definition }, 'bar': function (module,

Backbone.js 主干移除视图

在主干中,在视图上执行.remove()之后,我仍然能够通过console.log访问events对象,这正常吗 var View = Backbone.View.extend({ initialize : function () { console.log("hey"); }, events: { "click ul#products li a": "item" } }); var vi = new

Backbone.js 下划线模板在主干中不起作用

在my view.js中,我调用了葡萄酒列表tpl模板,如下所示。但索引页上没有显示任何内容。请帮忙 在index.html中 我已经在本地存储中添加了一些数据,我只想将这些数据显示到特定的div元素中 在酒单视图中,我得到了所有这些数据。意思是当我写作时,console.logthis.model.get'name';我得到了我想要的数据,但我只想通过模板将这些数据显示给那个特定的div。我应该怎么做,请建议。这就是您的代码应该如何获得预期的结果 var WineLists = Backbon

如何使用backbone.js上HTTP POST请求的结果实现级联下拉列表

有一个地址视图,它呈现一个包含基本地址字段的表单,包括邮政编码文本框和城市/郊区下拉列表。理想情况下,当用户键入邮政编码时,“城市”下拉列表应自动填充该邮政编码下的“城市/郊区”值。我知道有人已经提出了一个关于级联下拉列表的问题,但是这在某种程度上是不同的,我希望通过调用HTTP Get请求来获取城市/郊区的值 如何使用backbone.js实现它?我做了一些事情,但我觉得这是错误的。我所做的是添加了一个函数,该函数将填充一个集合,并在调用更新下拉列表的宏时将该集合作为参数返回。代码如下 Add

Backbone.js 主干木偶复合视图?

我正在读这篇文章,并看一些例子。我的数据结构似乎适用于此,但我想看看这是否真的应该用于复合视图 我有一个模型上的数据结构,看起来像这样 var myModel1 = { _id: 798698, username: "John", message: { message1: {message: "Some cool messsage", sent: "3/22/2014 12:20"}, message2: {message: "I'm ma

Backbone.js 主干验证 问题1

我正在尝试使用以下链接添加表单验证 示例代码工作正常。但在我的例子中,我有一个具有相应视图的表单,当我单击submit按钮时,如何验证 在视图的initialize中,我添加了以下代码以启用字段验证 var user = new User; $('input').each(function() { new Field({el: this, model: user}); }); this.model.set({route: formData.route}, {validate: true,

Backbone.js 对多个js文件使用grunt进行缓存破坏

关于grunt/Cachebasting有几个问题,但我没有找到足够接近我所寻找的东西。因此,一个新的问题 这就是我要找的。我的主干网/木偶应用程序的JS文件被组织到模块级文件夹中 |-应用程序 |- modules |- module1 |- scripts |- models |- views |- templates |- module2 |- scripts |- models

  1    2   3   4   5   6  ... 下一页 最后一页 共 119 页