Backbone.js 当我制作一个模板时,我得到了这个;无法调用方法';更换';“无效”的定义;
模板代码 <script type="text/template" id="test-template"> <section> <form id="<%= pid %>"> <div class="row"> <div class="span16"> <p>
模板代码 <script type="text/template" id="test-template"> <section> <form id="<%= pid %>"> <div class="row"> <div class="span16"> <p>
更有效的方法是,使用事件在嵌套视图之间通信,或者保留引用以调用方法。下面的示例显示了两个视图。外部视图响应单击事件,然后可以使用事件或方法调用来使内部视图做出适当的响应 InnerView = Backbone.View.extend({ initialize: function() { this.model.bind('doSomethingEvent', this.doSomething); }, doSomething: function() {
我有一个主要观点,负责提出其他观点…。 这是完整的代码(1)(2)(3) 当我第一次加载视图(视图1、视图2、视图3)时,一切正常。 然后,如果我尝试重新加载视图,则更改this.options显然是可以的。 但我注意到有一些僵尸视图…, 我指的是内存中以前视图的实例。 我发现这是使用这种和平的代码 View1 = Backbone.View.extend({ initialize: function () { this.model.on('change', fu
我正在构建一个单页web应用程序,这是我的MV*框架。它需要,所以我不想使用它作为我的模板引擎。 我将模板结果设置为要在其渲染功能中显示的视图内容: this.el.append( compiledTemplate ); 我想知道实现模板代码的正确方法: 应该是生成HTML文本的JS代码吗 它应该是一个包含JS代码的带有脚本标记的HTML文件吗 如何将显示与逻辑分开 如何在单独的文件(而不是JS文件)中编写CSS 嗯。。。这就是下划线模板引擎,不是吗?所以,不,您的模板应该是带有插值标记的HT
我有一个主干模型: var User = Backbone.Model.extend({ idAttribute: '_id', url: '/api/user', defaults: { username: '' }, initialize: function () { console.log(this, this.isNew()); } }); 然后初始化模型并获取实例: var user = new User(); user.fetch
我有以下型号和系列: var UserModel = Backbone.Model.extend({ url: 'api/user', idAttribute:'username', defaults: { username:'', password:'', email:'', tags:'' } }); var UserCollection= Backbone.Collection.extend({
如果在index.html文件中声明了我的应用程序模板,则它们可以正常工作。 但是,我想将所有模板保存在不同的html文件中, 喜欢 -AppTmpl.html <!-- SidebarView Template --> <script id="sideBarTmpl" type="text/template"> <div class="inner_div"><img src="images/com_logo.png"></div>
我正在使用主干网从一些平面数据构建分层数据模型,在尝试使用关系模型时遇到了一个问题。以下代码的输出如下所示: "D" "B" "C" "F" "G" "A" 其中每个字母对应于相关模型中的一个id。当我将关联添加到TreeNode模型中以形成关系时,树停止迭代,我只得到第一组结果(D>B>C),而不是我想要的(D>B>F)或(D>G>A)。下面是我添加关系时的输出: {"label":"Fred","language":"en",
在过去的几个小时里,我一直在试图找出为什么我的代码不能根据我一直在尝试遵循的几个教程正常工作。事情是这样的。很多关于在主干网中使用Require.js的教程和文章的代码如下所示: define(["jquery", "underscore", "backbone"], function($, _, Backbone){ return function(){ /* Some instantiation of Backbone stuff */ }; }); 当我试图运行这段代码时
我正在尽可能清楚地表达这一点 我有一个显示表单的视图。我将事件处理程序绑定到submit按钮,如下所示: events: { 'click #bsubmit': 'save' } <a href="#/home">Home</a> 在save函数中,如果成功,我会在导航之前先取消legateevents(): ... that.undelegateEvents(); window.router.navigate('#/home'); ... 因此,如果有人来
我遵循主干教程,在倾听事件的段落中有以下短语: 请记住,事件侦听器只能附加到“el”属性的子元素 然后他们正在执行以下代码: <script type="text/template" id="search_template"> <label>Search</label> <input type="text" id="search_input" /> <input type="button" id="search_button" v
我有代表一棵树的集合。每个模型都有从服务器变为id的父属性。使用传入数据重置集合后,每个模型都必须在集合中找到其父属性,并将引用设置为属性,而不是普通id。之后,必须从集合触发一个事件,以备渲染 var node = Backbone.Model.extend({ initialize: function(){ //reset event fired after all models are in collection, //so we can setup
我看到的大多数示例都是在应用程序加载时加载整个数据集合 我的第一个应用程序非常简单。I菜单区域包含可单击文章的列表,以及包含完整文章的文章详细信息区域。如果我有一系列的文章,我的数据最终可能会相当大 如果在一个巨大的集合中加载所有内容都不是一个好办法,那么有没有更好的例子可以告诉我如何延迟加载数据呢?我想要一个分页的文章集合(意味着最近的10个例子)。例如,当用户向下滚动时,我会加载下一个10或任何有意义的数字。网络上有这种技术的例子 希望这能有所帮助。这与其说是一个木偶问题,不如说是一个关于哪
当我使用Backbone.Collection.where函数过滤集合时,我得到一个模型数组作为返回值,而不是其他过滤的集合对象。所以我不能用其他的收集函数 这种行为的目的是什么?其中不是唯一返回数组的方法其中返回一个新的数组,因为您肯定不希望它自动改变现有的集合。此外,很多时候,您可能希望以数组形式显示结果 无论出于何种原因,BB开发者决定最好返回一个新的数组,而不是一个新的集合。一种想法可能是,返回的数据可能会用于不同类型的集合。另一个原因可能是,您总是知道从其中一个方法返回什么。2+类型的
这是bootstrap下拉列表所需的基本代码 <div class="dropdown"> <a class="dropdown-toggle" data-toggle="dropdown" href="#">Dropdown trigger</a> <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel"> <li role="presentation"&g
这是我的示例JST文件 (function() { var _ref; if ((_ref = window.JST) == null) { window.JST = {}; } window.JST['test'] = function(context) { return (function() { var $o; $o = []; $o.push("<h1>yayyyyyyaa</h1>"); return $o.j
我有一个辅助导航,用于某些视图,但不是所有视图。因此,我在使用二次导航的视图中包括以下内容,二次导航工作正常: setupNavigationSecondary: => view = new App.Views.Users.NavigationSecondary(navigation_active: ".navigation-secondary-manage") @$(".navigation-secondary").replaceWith(view.render().
在搜索了一段时间并尝试了不同的选项后,我决定使用i18next将一个基于早午餐和主干网的web应用程序国际化。然而,我有点纠结于在哪里初始化i18n,然后在整个应用程序中提供i18n支持 目前,我将初始化放在main Backbone.marionete.Application中,如下所示: @addInitializer (options) -> Media = require 'models/media' Router = require 'lib/router' @m
这个场景可以应用于一大堆UI小部件,但对于一个简单的示例,我将使用一个滑块(例如jQuery UI滑块) 我有一个jQuery滑块,它在“滑动”和停止时通知Backbone.Model。在这两种情况下,视图都会更新。 我想添加Undo/Redo功能,该功能将侦听模型中的更改,并使用previous()值为每个更改创建Undo对象。但是,我只想在滑块停止时创建撤消对象,而不是在滑动过程中的每次更改上 因此,我需要滑块以两种不同的方式通知模型滑块值的更改,这两种方式可以通过撤销代码来区分 目前,我正
如果主干模型的id仅在集合中唯一,而在全球范围内不唯一,那么这种做法是好还是坏?(因为与该系列相关) 例如,我有一个模型a,其中包含bs模型B的集合。 B集合属于模型A。 如果我有a1和a2两个A实例,我可以在a1中使用id=1的B,在a2中使用id=1的B吗 也许我看不出所有的含义,但它很有意义,我只是想在大规模使用它之前与你核实一下 谢谢如果这两个是单独的系列,您肯定可以拥有该系列独有的id 除非这两个集合相互作用,可能导致id发生冲突,否则问题在于它们是否代表相同的实体……如果是,则它们的
我非常喜欢主干,但我使用的不是REST,而是rpc over socket.io,所以我需要定制backbone.sync逻辑,不是发送RESTful请求,而是执行我的客户端rpc库方法 我发现了这样一个Backbone.sync定制的例子: 但并不是每件事对我来说都很清楚。最后执行Backbone.sync.call()-是什么? 它到底是如何工作的?它是否只是在这里执行一些GET请求,而我可以忽略它(在使用套接字时,我不必发出任何请求),或者它会生成一些重要的内容 我的想法是以这个例子为例
我正试图找出使用主干视图和模板构造以下内容的最佳方法。我们有一个“消息”集合,但是消息可能有不同的类型,每个类型都有自己的视图。因此,基础集合可能如下所示: { { id: 1, name="message one", type="customer-message" }, { id: 2, name="message two", type="support-message" }, { id: 3, name="attachment one", type="attachment" }
所以我有一个ID数组: var myIDs=[1,5,9] 我有一个收藏,我想搜索,并从中提取。我想我可以做如下的事情: var searchResults=myCollection.where({“uID”:myIDs}) 当然,这是行不通的,但必须有一种方法来实现类似的目标 一旦我有了选定的模型,计划是编辑的内容,然后保存。我是否正确地假设我可以通过执行以下操作保存整个批次 myCollection.reset(搜索结果) 显然,我是一个总的n00b到主干。您可以使用它来比较每个项目与阵列:
在上面的一行中,我将向视图传递一个集合 在CollectionListView中,我试图编写一个函数来使用此集合。但是集合仅在initialize函数中定义,我们需要通过initialize()调用另一个函数。但我希望通过定义事件在单击时触发该函数 var plistview = new CollectionListView(productcollection); 如果集合从initialize传递给上述函数,则该函数返回length。但是 独立于事件调用时返回未定义 categoryList
我一直在阅读和研究,但我很难弄清楚如何为主干/木偶项目组织嵌套的复杂视图。中的答案与我认为需要的非常接近,但在处理一个集合项中的多个视图时,它似乎有不足之处 我将通过扩展该问题中的公寓示例进行解释 假设我们有一套公寓,一套他们的房间,列出了他们的椅子。此外,让我们添加公寓租户。作为租户视图的想法可以有自己的视图管理、事件,并且可以在站点的其他地方重用 根据我的理解,它可能看起来像: ApartmentCollectionView(CollectionView) ApartmentView(复
情况如下:用户可以在应用程序中上载文件。他们可以在任何时候(和多次)这样做 我想显示一个微调器时,任何上传正在进行,并删除它时,没有上传正在发生的时刻 我的方法 上传由外部文件上传插件(如blueimp)处理,在它的add方法中,我抓取jqXHR对象并将其添加到主干集合(在我的应用程序中是图像,因此我将其与木偶的CollectionView结合使用) 以下是在木偶项视图的onRender回调中调用的函数的一部分: // Get the file collection var uploadFile
我正在使用stickit.js实现双向数据绑定。我很想知道如何将stickit与嵌套对象属性绑定。对于一个例子来说 var Person = Backbone.Model.extend({ defaults:{ name: { first: 'James', last: 'White' } } }); 我想知道是否可以像这样绑定文本输入 <input type="text" name="fir
这是我的路线 define [ 'apps/home/index/index' 'apps/home/edit/index' 'apps/home/about/aboutUs' 'apps/home/about/jobs' ], (HomeIndex, EditIndex, aboutUsIndex, jobsIndex) -> class Router extends Marionette.AppRouter routes :
只有在有查询的情况下,才有办法激活backbone.js路由吗 简单的例子-我需要确保 somepage?*params : "some func" 访问/somepage 显然,如果没有参数,我可以中断函数,但我正在寻找一个简单地重新格式化路由的答案。因此,首先让我们假设您正在扩展路由器上使用路由哈希: var MyRouter = Router.extend({ routes: { 'somepage?*params': 'someevent' } }); var myR
我是BackboneJS、RequireJS、JQuery应用程序开发的新手。我想使用router.navigate()更改当前视图。这是路由器配置: define([ //Libraries to load "jquery", "underscore", "backbone", "mustache", //Views to load "../views/Main", "../views/Login", "../vi
所以我想做的是: 我有一个收藏列表视图 项目 项目视图 现在我使用的方法是,当我单击item时,它处理itemview中的单击并添加所选的类,我使用$('.selected').removeClass('selected') 但我觉得这样做不对,我已经想了好几次,我如何才能做到最好。 也许我应该用事件 想法/实现?如果每个视图对应一个模型,那么我可能会选择该模型,并让视图对模型上的更改事件作出反应: var MyModel = Backbone.Model.extend({ select:
对这里来说是很新的。我试图在不复制和粘贴我遇到的教程中的代码的情况下重新创建ToDo示例。我还使用Parse.com作为我的后端。我一直在尝试使用主干视图填充我的集合中的待办事项。这是我的看法 app.ItemsView = Backbone.View.extend({ tagName: "section", initialize: function() { app.items = new app.ItemCollection; app.ite
我的例子是: var stooges = [{ name: 'moe', age: 44, userid: 1}, { name: 'larry', age: 44, userid: 2}, { name: 'curly', age: 44, userid: 3}]; var StoogeModel = Backbone.Model.extend({}); var StoogeCollection = Backbone
我想知道,将骨干模型cid将在多个集合中唯一。 示例:我有pageCollection,每个pageCollection将包含另一个名为controlCollection的集合 如果我正在创建控件模型,那么它的cid在所有页面集合中的所有controlCollection中都是唯一的 层次结构: pageCollection ->pageModel ->controlCollection ->controlModel 考虑到同一个模型可以通过主干设计在
我使用zombie测试主干应用程序,当我使用zombie.visit时,zombie会在加载页面上的所有脚本之前调用誓言回调,因此我的主干应用程序不会加载。但是,如果我等待'done'事件,即,browser.on'done',@callback则我的主干应用程序会在调用回调之前加载 是否要在收到“完成”事件后使访问函数仅回调 PS Im使用browserify加载相当大的脚本,包括主干/下划线/jquery和其他jquery插件我遇到了同样的问题,但奇怪的是,我使用了您的一些其他建议来使用“o
我试图将两个单击事件绑定到两个不同视图中的单个HTML元素。其中一个视图触发事件,另一个不触发 其中一个视图将body作为其el属性。如果我将此视图的el更改为与另一个视图相同的元素,则会触发两个事件 这是预期的吗?如何在两个不同视图中绑定同一元素的单击事件?是,这是预期的。主干用于事件绑定。这意味着,事件实际上绑定到视图的EL,而不是直接绑定到子节点 当你说“同一个元素”时,你是说DOM中完全相同的节点吗?或者,您是指具有相同选择器的节点吗?我想我不太清楚 我可以问一下为什么要将两个视图绑定到
如果我有一些位掩码常数,即kRequired=0x1、kLocked=0x2、kTypeA=0x4、kTypeB-0x8等 应该在哪里将它们添加到模型中,因为我宁愿没有全局变量,即使它们是不可变的值。在A.B.C.D以下面的代码还是其他方式 这里有很多(30个),只是在下面的例子中展示了一对。在我看来,它们不是要设置/获取的实际实例值,而是一个作用域为模型类的全局查找 var Entry = Backbone.Model.extend({ initialize: function
我有一个获取请求,其响应如下所示 response = { id: 1, title: 'text', followers: [{}, {}] // array of objects } 正如您所看到的,响应是一个对象,它有一个属性跟随器,它是一个对象数组 我想从这个响应中创建一个模型和一个集合, 具有以下属性的对象: response = { id: 1, title: 'text' } 另一个是模型集合 followers: [{}, {}]; 激活我的目
我有一个模式弹出窗口,打开时会更改URL。当用户关闭弹出窗口时,我想返回到上一个URL,但我不想触发与该URL关联的路由,因为这将重新加载我的集合并呈现视图等。是否有方法在不触发路由的情况下调用window.history.back(),或者是否有类似的主干 我能想到的唯一解决方案是保存上一条路线,然后在模式关闭时调用 Backbone.history.navigate(route, {trigger: false, replace: true}); 但这似乎是解决一个简单问题的复杂方法。在路
Heroku活动跟踪应用程序的版本,如v1、v2等。应用程序如何以编程方式读取其版本?我有一个使用主干网的单页应用程序,希望使用部署版本的更改自动通知基于主干网的客户端,当部署的服务器版本更改时,它应该重新加载自己。当前无法访问Heroku上的当前版本 一个缓慢的解决方法是使用Heroku gem获取版本: 您可以在启动应用程序时异步获取当前版本,然后将其缓存到下一次部署。 如果版本与已知版本不匹配,则让客户端每分钟轮询一次 如果他们在您不知道的情况下获取它,则将其计算为与他们必须的相同的值,
我试图获取一个集合x次,每次递增一个计数器。我遇到的问题是,由于我需要在回调中呈现视图,而且.fetch()是异步的,所以我不能简单地执行javascript循环。我想在success回调中告诉它再次调用自己,而不会进入无限循环 以下是我所拥有的: @collection.fetch data: {q: letters, i: i} success: @renderList() 在等待@renderList完成后再次运行之前,如何使此运行x次,每次递增I
我正在努力学习Backbone.js,但遇到了一个问题。model.save不会更新我的模型值,尽管model.fetch会更新该值 请查看下面的代码,如果我在这里做错了什么,请告诉我: 型号 var Person = Backbone.Model.extend({ url: "CreatePerson", defaults: { name: "", age: 0 }, initialize: function(){ this.on("
下面是一个名为activatetwoitem的ItemView模板 <!-- <tr>--> <td><%= gatewayJson.serial %></td> <td>In Inventory</td> <td><%= gatewayJson.macaddress %></td> <!-- </tr>--> 这是合成视图 Step2Views =
所以我知道在主干网中有很多方法可以做事情,但是因为我没有在这里的很多人的丰富经验,所以我想要关于最佳方法的建议 我有一个基本的CRUD应用程序,其中我有一个用于添加数据的表单和一个用于编辑数据的表单,它们本质上是相同的。并且实际上附加到同一个DOM元素 因此,我可以将这两个表单包含到一个视图中,并提供适当的模板,这取决于该视图是否具有模型。大概是这样的: var AddEditView = Backbone.View.extend ({ el: $("#add"), template: $("e
我试图在haml模板中输出下划线模板变量,但我没有任何运气 HTML没有被转义,因此我似乎无法理解下划线变量没有呈现的原因 HAML-完整模板 %script{:type => "text/template", :id => "user_list_template"} %h4 Users #test %table.table.table-bordered %thead %tr %th # %th Name
我使用的是Backbone.js,出乎意料的是,由于这个场景,我现在处于混乱的状态 我的测试对象: test: { "links": { "nameLink": { "name": "name 1", "name": "name 2", "name": "name 3" }, "ageLink": { "age": "1",
我有两个视图与相同的div元素关联: MuSe.views.View1= Backbone.View.extend({ el: "#applicationCanvas", ... MuSe.views.View2= Backbone.View.extend({ el: "#applicationCanvas", ... 我从渲染View1开始,当用户终止交互时,我想用View2替换所有内容 我想正确地解除View1(将其从div#applicationCanv
我正在编写一个主干(带require)应用程序,需要搜索一个集合以提取第一个模型(我使用的是唯一的id,所以只有一个) 我遇到的问题是我遇到了一个错误: Uncaught TypeError: Object [object Object] has no method 'findWhere' 当它使用findWhere命令到达行时 视图初始化为: initialize: function (models) { this.locationCollection = new Location
我知道这是一个初学者的问题,但我读了博士,一些教程,我仍然很难让它工作 我有一个简单的php rest Web服务,您可以看到声明的URL: $app->get('/todos', 'getTodos'); $app->post('/todo/add', 'addTodo'); $app->put('/todo/update/:id', 'updateTodo'); $app->delete('/todo/delete/:id','deleteTodo'); 这是我的主
有这样一张桌子 1|2|3 4|1|1 1|1|1 现在我想按编号>=3的列进行筛选,我会得到: 1|2|3 4|1|1 ClientFilter库似乎只针对字符串(regex实现)。有其他方法吗?Backgrid类很容易扩展,因此您只需创建自己的筛选器类即可覆盖ClientSideFilter。makeMatcher的功能如下: var GreaterThanClientFilter = Backgrid.Extension.ClientSideFilter.extend({ ma