我在Backbone.js项目中看到一个奇怪的bug。创建、新建、编辑和删除操作正常工作。呈现以文本作为属性的对象的编辑操作时,文本框中仅显示该文本的第一个单词。在索引上,将显示全文
奇怪的是,如果我单击“编辑”,然后确认,主干将向服务器发送一个包含原始文本的PUT请求(而不是仅第一个单词,这是我在浏览器中看到的)
例如
使用文本“foo-bar”创建帖子
索引显示:“foobar”
编辑节目:“富”
单击保存->索引显示“foo-bar”
Firebug确认服务器对PUT的响应为200 OK,
我在模型上调用“save”,并在PHP后端以json的形式返回新模型。当我逐步使用Backbone.Model.save方法时,我可以看到它成功地获得了服务器响应,然后设置了模型(在下面的options.success闭包中)。但是,当执行返回到我的click处理程序时,模型具有旧属性(即未设置id)。会发生什么
这是我的点击处理程序:
addButtonClick: function(e) {
var data = $(e.target).closest('form').serialize
是否有一个简单的模块化网格,它使用Twitter引导(table)和Backbone.js构建,提供ajax加载、排序、分页和内联编辑等功能
到目前为止,我找到了一些解决方案,但没有一个符合这一要求:
-->Twitter引导和jQuery数据表。我不喜欢这样,因为所有的网格逻辑(ui/模型)都已经实现到一个紧密耦合的大文件中(jquery.dataTables.js)
-->SlickGrid(jQuery支持的数据网格)和主干网。我也不喜欢这样,因为首先它使用了一个抽象层来与主干(slick
我有一个带有日历页的应用程序。在那个页面上,我有代表约会的元素。以下是迄今为止我一直在展示约会的方式:
将所有元素打印到页面上,每个元素的位置为:绝对。
迭代元素,获取每个元素的约会id,并根据约会开始的时间设置该元素的top属性。
换句话说,我在top:0、left:0处将所有约会一个接一个地转储,然后将每个约会垂直移动到正确的位置。这是一个多人日程表,不是普通的挂历。我做了一些类似的事情,将约会安排到各个栏目中,但现在这并不重要
我的问题是:在初始页面加载时,一切正常,因为每个约会元素都有一
我一直在使用Backbone.LayoutManager开发一个原型主干应用程序,我遇到了一些我不理解的问题
该场景是,我有一个表单,用于将“people”{firstname,lastname}添加到列表视图中,然后保存模型,新项显示在列表中。我还有一个remove函数,在刷新页面后可以运行,但是如果我尝试在不刷新页面的情况下删除刚创建的人,则永远不会调用removeUser()函数
我的代码如下。有人能帮我吗?我只是想学点骨气,如果你能回答这个问题以及其他批评,我将不胜感激。谢谢
defin
我有一个模型。
我在模型中添加了注释。
没问题
当我实例化视图时,我想看看data.objects在注释中是否有内容
我应该把if语句放在哪里?在视图中渲染?我如何测试它
js和主干noob在这里,所以请原谅我错过了基本知识
让我知道,非常感谢
欢迎参考任何教程
更新:这是我的模型的视图
var BlasterView = Backbone.View.extend({
tagName: 'li',
className: 'blaster',
events: {
我定义了以下路由器,但是.route功能似乎没有设置。我做错了什么?提前谢谢你的帮助
# app.js.coffee
initialize: =>
router = new Backbone.Router
router.route "foo/:bar", "baz"
console.log router.routes # returns undefined
使用Router.route创建的路由存储在History对象的内部--它们不会添加到Router.routes集合中
我在加载mustache.js作为带有RequireJS(用于主干模型)的AMD模块时遇到问题。我也开始使用TypeScript,因此我没有完全遵循依赖项和声明流
从app.ts开始:
require.config({
paths: {'jquery': 'lib/jquery-1.8.3.min', 'underscore': 'lib/underscore.min', 'backbone': 'lib/backbone.min', 'mustache': 'lib/mustache'
因此,我一直在使用basic Backbone.js创建一个简单的演示页面,它是一个基本的用户管理器。无论是创建(发布)还是更新(放置)用户信息,我都会运行相同的函数。POST和PUT请求均成功(即调用我的“success”函数),但只有PUT命令会触发路由器,POST请求不会触发同一行代码,而它会触发success函数
下面是我的事件代码。saveUser函数负责PUT和POST请求,但成功的路由器仅从成功的PUT请求触发,而不是从成功的POST请求触发(即使两者都成功更新了数据库)
任何帮助
我试图从url属性中提取一个集合,但遇到了一些问题。fetch()似乎成功返回,但是我无法使用get()访问集合中的模型。我正在使用bbb和requireJS开发我的模块
var rooms = new Rooms.Collection(); // calls the rooms module
rooms.fetch({success: function(){
console.log(rooms.get(1)); // should output the first model
我遇到了一个前所未有的难题。我想知道我是否遗漏了一些非常明显的东西
我有一个这样的模板(我用它编译):
后来我意识到我在另一个表单标记中呈现了一个,我相信Chrome会通过删除内部表单标记自动修复无效的html。作为控制台,这可能是我的问题。记录模板的html输出包括内部表单标记。呈现的代码是什么样子的?在模板的开头添加,并使用您最喜欢的浏览器的调试器,逐步执行生成的模板代码。您能在JSFIDLE中重现这一点吗?这里有一个已经加载的主干线、下划线等的现成文件:@fencliff我试图复制错误,但
我正在用主干网、木偶网和RequireJS构建一个应用程序,如果应用程序启动可以以任何方式改进的话,我希望由一些更有经验的人来运行
文件夹结构:
index.html
js/
collections/
libs/
backbone.js
marionette.js
require.js
...
models/
views/
app.js
init.js
router.js
目前该应用程序的引导如下
index.html将require
我制作了一个主干应用程序,但整个代码都在一个页面中。我想在单独的文件中分离视图、集合和模板。我没有使用require.js或任何其他锅炉板。是否有任何方法可以将代码分离到文件中?
MV*体系结构的主要目的是将代码和UI分开 是的,有很多方法可以做到这一点。我更喜欢将每个模块编码为一个CommonJS/node样式的文件,并使用它来解析依赖项和连接要发送到浏览器的文件
另一个选择是,这是目前最受欢迎的模式之一,尽管社区仍然大多没有决定/未指定/有许多选择模式
另一个流行的选择可能是使用构建工具(r
刚开始使用主干网,一切都很顺利,直到我尝试加载一些Json数据
// Category Model
var Category = Backbone.Model.extend({
defaults: {
title: "Not specfied",
paramName: "not_specified",
filter: false
},
initialize: function(){
console.log("
我在主干中重新呈现一个简单集合时遇到问题,呈现事件从未从侦听器中激发。。。我不知道哪里出了错,能找个人帮我一下吗
与模型一起归档:
window.MetricDevice = Backbone.Model.extend({
defaults: {
ip: null,
framesReceived: null,
framesOutOfOrder: null,
framesLost: null
}
});
window.MetricDevi
我有一个用BackboneJS编写的客户端应用程序。它从服务器提取数据。服务器上的域对象使用guid标识自己
在主干网中,如果模型的id未设置为“null”,则“isNew”返回false。因此,如果没有副作用,我无法将模型的id初始化为Guid.Empty(而不是null)
当我从服务器获取数据时-响应的ID值为Guid.Empty。主干自动解析服务器的响应,并为所有从“null”更改为Guid.Empty的属性触发onChange事件
我想知道是否有人有处理这件事的经验,解决这件事的正确方法
我已经阅读了stackoverflow中有关日期格式的问题,发现了许多标记为重复的问题。我在尝试了他们接受的各种方法后发布了这篇文章,但我无法让它发挥作用
首先,我使用的是主干网
我拥有的是来自数据库的(Y-m-d)格式的日期。通过json解析,我将其放入下划线模板中。我需要它是(m-d-Y)格式
来自数据库的值
data.pp.dob
我尝试的内容(将其转换为m-d-Y格式)
我正在使用jquery datepicker插件获取日历。所以,当我尝试格式化日期时,一切都变得异常顺利。有时,当我
在获取模型数据时,我似乎不知道要侦听哪个事件。通常,当我为一个集合进行同步时,我会收听同步事件。然而,这似乎不适用于模型
那么,我如何知道我的模型何时完成抓取?它会触发哪个事件
编辑:以下是使用模型的视图的开始部分:
var HomeContent = BaseView.extend({
initialize: function(options) {
self = this;
this.academyID = this.optio
我读了这篇文章,但因为没有答案,这个问题似乎无关紧要。我想在这里再问一次。我完全按照主干文档页面的说明做了,但没有得到任何结果。有人能帮我指出这里出了什么问题吗?
代码如下:
App.View.Task = Backbone.View.extend({
tagName: 'li',
template: _.template($("#taskTemplate").html()),
event: {
'click #edit': 'editTask'
我有一个视图,其中包含许多子视图。我的计划是利用木偶的布局对象作为骨架视图,如下所示:
define([
'app',
'views/orders/list',
'text!templates/orders/main.html'
],
function (app, ListView, template) {
'use strict';
var View = Backbone.Marionette.Layout.extend({
template : _.temp
我无法从视图呈现方法中的fetch方法获取响应字符串
收藏课在这里
Collection = (function(){
var Events;
Events = Backbone.Collection.extend({
url:function(){
//alert(urlOptions);
return this.urlParam;
// alert('API call :'+urlOpti
我使用Backbone.js在我的应用程序中管理模型和集合。
因此,我有一个与数据库中的用户实体相匹配的“Usuario”模型。代码如下:
var Usuario = Backbone.Model.extend({
defaults:{
idusuario: 'undefined',
apellido: 'undefined',
nombre: 'undefined',
dni: 'undefined',
dom_usuario:
当我手动定义收藏内容时,一切正常。但在我尝试从服务器获取数据(我得到了有效的响应)之后,我的视图并没有显示出来。集合视图(ul)显示,但单视图(li)未显示?在将数据提取到集合时,我是否需要观看一些内容
更新
main.js
app.js
ObjavaModel.js
ObjaveCollection.js
ObjavaView.js
ObjaveView.js
获取数据后是否重新提交视图?例如,在您的视图(ObjaveView.js)中添加:
不,我只是想看看我的错误。我已经更新了问题并添加了
我正在创建主干插件,假设我有一个CoffeeScript代码,如下所示
((root, factory) ->
if typeof exports is "object" and typeof require is "function"
# CommonJS
module.exports = factory(require("backbone"))
else if typeof define is "function" and define.amd
# AM
一般来说,我对Backbone.js和编程都是一个完全的新手,我到处都在搜索如何在前端使用Backbone.js JavaScript,在服务器端使用Java实现Twitter登录功能的教程,但都没有用。任何帮助都将不胜感激。谢谢。只是做了类似的事情,但在服务器端使用node.js除外。实际上,我认为这比在客户端使用API更容易,因为有一个很酷的节点插件,名为passort.js。你想通过后端登录用户吗?人们过去常对我提起这件事,但你是说javascript而不是Java吗?他们是不同的,真的不
如何在所有区域和视图上添加工具提示
这是我的layout.js:
return Backbone.Marionette.Layout.extend({
template: bearBoxLayoutTemplate,
regions: {
header: ".header",
sidebar: ".sidebar",
workspace: ".workspace"
},
// onShow also
我的主干模型是以JSON的形式从API获取数据
结构如下:
releases
tracks
length
现在我特别想要一个轨道的长度。你如何做到这一点
我试着去做
afterRender: function(){
this.model.get('releases.tracks.length');
console.log(track);
}
但这不起作用,给了我“未定义的”
请提供帮助此问题已被多次询问,例如。总之,你可以这样做。在某些情况下,你可能需
我想显示此文档模型的网格:
{
id: "53f7ba4b30d2317912fc8004",
title: "Hellow world",
on_slideshow: false,
country: {
name: "United state",
country_code: "US"
}
tags: [
{
name: "backbonejs"
obj
我正在构建一个模态弹出框,通过将骨干木偶ItMeVIEW插入基础揭示模态。情态动词出现,但没有事件触发。具体来说,我正试图捕捉一个点击事件
我从木偶布局视图加载基础。< /P>
'use strict';
define([
'jquery',
'underscore',
'backbone',
'region/actionbar',
'region/modal',
'text!/js/
如果我有一个已呈现的CollectionView,并且我使用新数据重置了集合,那么如何淡出当前集合视图,然后使用新集合数据淡入?最简单的方法是,在我的洋葱中,是调用collection.reset函数来完成jQuery.animation。假设您的集合位于类为collection的元素中,那么我会这样做
var that = this;
$('.collection').animate({ opacity: 0 }, { complete: function() {
that.colle
访问todomvc源代码,第150行:
我添加console.logtodo如下:
var todoItems = shownTodos.map(function (todo) {
console.log(todo)
return (
如果TODO有3个项目,则console.log将被调用3*3=9次。
100个项目将被称为100*100=10000次。
我认为这是一个性能问题。
有更好的方法吗?是性能问题吗?是什么导
三分之一的时候我会说“主干未定义错误”。它指向requirejs文件中的第19行(路由器在路径第21行声明)。就像主干网有时加载速度足够快,有时加载速度不够快。我不知道我做错了什么。下面是requirejs文件和初始化的一部分
require.config({
paths: {
//libs
jquery: '../../bower_components/jquery/dist/jquery.min',
// "jquery-ui": '.
我的主干收藏如下:
var model1 = new Backbone.Model({mode: 'EX'});
var model2 = new Backbone.Model({mode: 'AB'});
var model3 = new Backbone.Model({mode: 'DF'});
var model4 = new Backbone.Model({mode: 'AB'});
var model5 = new Backbone.Model({mode: 'DF'});
var m
我想在模板中显示我的模型,但我有一个问题:
Uncaught ReferenceError: title is not defined
这是我的密码:
var NewsView2 = Backbone.View.extend({
NewsView: _.template(NewsView),
initialize: function () {
console.log(this);
this.$el.html(t
我可以成功地做到这一点:
App.SomeCollection = Backbone.Collection.extend({
comparator: function( collection ){
return( collection.get( 'lastName' ) );
}
});
如果我想要一个只按“lastName”排序的集合,这很好。但是我需要动态地进行排序。有时候,我需要按名字排序,比如说“firstName”
我的彻底失败包括:
我尝试将一个额外的变量指定为so
当我在backbone.js应用程序中使用$el时,firebug总是告诉我这一点。$el没有定义。我必须切换到$this.el来引用jquery元素。这两种方法之间有什么区别吗?this.$el是$this.el的缓存版本。它应该在正常情况下工作,我从来没有失败过
我想你在其他地方遇到了问题。this.$el是$this.el的缓存版本。它应该在正常情况下工作,我从来没有失败过
我认为您在其他地方遇到了问题。我假设您指的是主干上的$el属性。查看对象
我有一个类似的问题,那是因为我使用的是旧版
我对Backbone.js和Require.js还很陌生。在我的应用程序中,我通过require(使用text!插件)将模板加载到每个模块中,如下所示:
define([
'jQuery',
'Underscore',
'Backbone',
'API',
'Utils',
'text!templates/home/register.html'
], function($, _, Backbone, api, utils, registerTpl){
var registerVie
我开始学习以下教程,但在将第一个事件处理程序添加到视图中后,我遇到了问题:
// Filename: views/project/list
define([
'jquery',
'underscore',
'backbone',
'handlebars',
'collections/projects',
'text!templates/projects/list.js'
], function ($, _, Backbone, Handlebars, ProjectsC
我正在尝试使用Backbone.localStorage作为应用程序的后端
我写了一个叫做Era的模型,以及相应的EraView。在EraView中按enter键会保存模型,这就是我得到错误的原因:
Uncaught Error: A "url" property or function must be specified
urlError backbone.js:1509
_.extend.url backbone.js:515
_.result underscore
我正在编写一个主干应用程序,其中必须使用登录用户的数据获取用户模型。在我的模板中,我需要显示用户信息(用户名、名称等)。编译模板后,控制台中记录了错误消息“未捕获引用错误:未定义用户名”。Ajax请求也已成功完成。有什么问题吗
我正在链接我的js文件
即使您的AJAX请求成功,但在您执行下划线模板时,它很可能尚未成功。在fetch之后立即调用render,这是一个异步操作。执行这行代码时,model.toJSON()call很可能返回一个空对象
您应该将fetch调用移动到视图的initiali
我有这样一个骨干收藏:
var ThreadCollection = Backbone.Collection.extend({
url: '/api/rest/thread/getList'
});
var myCollection = new ThreadCollection();
然后我使用数据对象从服务器获取它以附加查询参数(因此在本例中,它显示为“/api/rest/thread/getList?userId=487343”)
我可能希望使用其他参数来代替userId(groupI
我的要求是允许用户选择要上载的文件,然后需要从用户那里捕获适用于该特定文件的其他所需信息,这些信息将在上载时作为参数发送到服务器
到目前为止,我一直在通过使用fine uploader on Submit回调并显示带有所需输入的模式来实现这一点。如果输入通过验证,我将存储文件id和相关参数,否则,如果它们关闭/取消模式,我将调用fine uploader cancel api并取消具有给定id的文件
用户可以多次执行此操作,将文件排队到标准的精细上传器列表中,然后按Upload以同时启动上传
所
我在Rails应用程序中使用主干和Eco模板。我的模板包含以下代码:
<% @collection.each (model)-> %>
<% console.log model.get('name') %>
<p><%= model.get('name') %></p>
<p><%= model.get('description') %></p>
<% en
我正在尝试获取OnChange事件上的JSON。以及对现有haml页面进行更改。
我的目标是用json值填充另一个select字段。目前,我正试图打印一条消息,说明获取了json。但是我的html没有变化
在控制台的network选项卡中,我看到正在发出URL请求,并返回304响应。我还可以在响应中看到json
events:
"submit form" : "onSubmit"
"change [name=repository]" : "onChange"
onChang
取回我的收藏时,服务器会向我发送姓、名和配偶名(以及对问题不重要的其他属性)
我希望能够添加一个名为mailing\u name的属性,它本质上是:
var setNameOnFormAttribute = this.get("last_name") + ", " + this.get("last_name");
if (!_.isNull(this.get("spouse_first_name")) || !_.
我见过一些人在监听模型更改时调用此.render()的例子
initialize : function() {
this.listenTo(this.model, "change:someAttribute", this.render());
this.listenTo(this.model, "change:someOtherAttribute", this.render());
}
如果render()函数从某个下划线模板创建视图并将其附加到html文档,那么最初附加的现有
根据,木偶。应用程序提供了三种“动作”方法:
Application.execute-执行一些操作,但首先用MyApp.command('action',function(){})注册它
Application.request-类似于Application.execute,但可以返回一些内容
Application.trigger-与Application.execute相同
Application.trigger和Application.execute之间有什么区别?当A调用execute时,
我对下一个项目使用BackboneJS/CanJS的两种选择感到困惑。有人能建议哪一个更好吗?他们有很多相同点和不同点,以下是一些:
相似性
它们都有可以观察到的模型,它们使用相似的模式来设置属性
CanJS中的控件与主干中的视图非常相似,您以类似的方式在这两个视图中侦听事件
它们都很小,而且非常灵活
在这两者中的路由非常相似,主干网有一个特殊的路由器对象,而在CanJS中,您在控制类中进行路由,但它们非常相似
我发现主干网中的许多工作模式都可以转换为CanJS
差异:
主干网有一个巨大的
我已经更新了我的问题,请查看更新部分:
$(document).on ('page:change', function(){
Backbone.history.stop();
Backbone.history.start();
});
我正在rails4中使用rails主干gem,我遵循了github的gem页面上的一个简单示例。Backbone.js现在工作正常,但当我按browser back按钮向后移动以查看我的所有帖子列表时,什么也没有显示。当我按下由s
在木偶中,是否可以从模型和集合的嵌套列表中生成平面列表
例如,我想生成一个select元素,每个节点都作为一个选项(子选项应该缩进):
这应该是这样的:
<select>
<option>top level 1</option>
<option> 2nd level, item 1</option>
<option> 3nd level, item 1</option>
上一页 1 2 3 4 5 6 ...
下一页 最后一页 共 121 页