我有一个模型,它有两个属性,即集合:
MainModel= Backbone.Model.extend({
defaults: {
colOne:undefined,
colTwo:undefined
},
initialize:function() {
this.set({colOne:new InnerCollection()});
this.set({colTwo:new InnerCollection()});
}
});
Inne
我使用RequireJS组织我的主干应用程序,我的路由器模块如下:
define([
'jquery',
'underscore',
'backbone',
'collections/todos',
'views/todosview'
], function($, _, Backbone, TodosCollection, TodosView){
var AppRouter = Backbone.Router.extend({
routes: {
"": "index"
我不熟悉backbone.js,所以这可能是一个简单的问题
路由器似乎使用语义上合理的URL,但它们对用户不是很友好
在我看到的示例中,他们使用:
local.com/post/id/1
但在wordpress中,我会选择将其改写为:
local.com/2012-11-03-backbone-js-router-question.html
这将通过一个大的重写表运行,并转换到正确的控制器/操作。我不想把路由器暴露给用户太显眼
我最后一次申请这个问题是考虑到电子商务:
cms页面local.c
在我看来,我有这个功能:
saveData: function(){
this.collection.setSelected(this.collection.where({name : this.$('#projects').val()}));
}
以及我的收藏中相应的功能:
setSelected: function(project){
this.each(function(model){
model.set({selected: false});
}
我对Backbone.js非常陌生,我正在尝试让这个简单的示例正常工作。基本上,在JSFIDLE中,当我运行代码时,它告诉我属性“firstname”没有定义
以下是小提琴的链接:
如果您能帮我解决这个问题,我们将不胜感激
V/R
Chris由于模型实际上是一个集合,因此需要对其进行迭代,并将模板应用于集合中的每个模型。一种方法是使用下划线扩展名集合。每个:
render: function() {
// clear the view
this.$el.empty();
不要直接从模型中引用视图。这完全违背了Model/View/*设计的核心原则。当您调用set且验证失败时,模型将发出错误事件(从0.9.9开始),您的视图应侦听该事件,并通过相应地更新视图作出响应。您也可以交替地将回调传递给set,以处理错误,但在大多数情况下,事件是更好的选择。请注意,您的模型需要实际从验证返回一个错误对象,该对象将拒绝更新数据,因此在用户修复输入并发生模糊后,数据将实际更改。在代码保持原样的情况下,主干认为validate调用成功,因为没有返回错误
在您看来,以下是一些伪代码
我只是想了解主干网背后的决定。木偶网对UI元素的看法。
在现有DOM元素上实例化Marionette.View时,如下所示:
view = new Marionette.ItemView({
el: "#element",
ui : {
whatever : "#whatever"
}
});
我可以访问视图。$el,即视图中的jquery选择器。初始化,目前为止一切正常。
但是,当我尝试访问view.ui.which时,我只能访问选择器,即字符
我试图访问在主干视图的初始化函数中返回的this对象。在初始化函数中,我将
console.log(this)
它将为该视图返回一个对象。当我通过名称空间架构直接访问视图时,如:
console.log(mysite.some.namespace.View)
我得到了以下回复:
function (){a.apply(this,arguments)}
除了在初始化函数中记录“this”对象外,我如何访问它 将新的mysite.some.namespace.View值存储在某处。您需要访问
我正在开发一个与express.js服务器通信的主干应用程序。我正在考虑保护express.js服务器的安全。创建一个中间件来检查发送到服务器的任何数据是否为json格式(因此没有多部分格式)有意义吗?我怀疑它是否提供了任何额外的安全性,但可以帮助返回更好的错误代码。它可以作为第一行过滤,而且相当简单。只需检查内容类型标题,然后拒绝或调用next()
更简单的方法可能是req.is('json')
module.exports = function() {
return function(r
我正在开发一个应用程序,我希望完全由键盘输入驱动,而不是任何鼠标点击。它是使用木偶开发的,虽然我完全能够响应输入上的事件,但我确实很难响应不包含任何输入的视图上的事件
events: ->
'keyup #discovery-region' : 'logKey'
logKey: (e) ->
alert("Key pressed")
console.log("Key pressed " + e.which)
在我的index.html文件中
<div
在应用程序中,Backbone.history.loadUrl()用于加载页面。但我发现视图中的事件并没有解除绑定,因此在加载页面时会创建越来越多的僵尸事件。加载页面的正确方式是什么。(更改URL并可能在活动视图上调用close(),以在必要时触发任何清理。…实际上答案很简单…我只需要在必要时调用.close()。在我的情况下:
@contentView.close()
Backbone.history.loadUrl Backbone.history.fragment
我想使用backbone.js创建一个示例页面,我对它完全陌生
该视图应该类似于backbone.js网站中显示的视图,其中有一个侧栏,右侧有一个内容。
如本链接所示:-
考虑以下场景:-
var model = Backbone.Model.extend({
data:[
{'title': 'Apple', 'logo':'images/apple.png', 'history': "Some history about apple"}
好吧,我搜索了又搜索,找不到任何与我实际问题相关的东西
基本上,我有一个简单的路由器,定义了几个路由,如果直接调用,所有这些路由都可以由服务器直接呈现
所以主干历史就这样被称为
Backbone.history.start({
'pushState': true,
'silent': true
});
然后我有一个非常简单的导航
this.navigate($(event.currentTarget).attr('href'), {
'trigger': true
})
我有一个非常简单的路线。当我第一次单击我的
下面是主干布局管理器github的示例代码。
视图的自定义渲染未被调用/未在断点处停止。正在发生什么
// Create a Content view to be used with the Layout below.
var ContentView = Backbone.Layout.extend({
template: "#content"
});
// Create a new Layout with a sub view for content
我试着用,来储存模型。我有一个JSON,我正在用主干网获取数据,我正在尝试本地存储获取的数据。json文件的第一个变量是一个名为tstamp的时间键。如何基于tstamp属性存储和检索数据??我的代码:
// Backbone model Creation for highlight
var HighlightModel = Backbone.Model.extend({
defaults: {
tstamp: "1234",
att: "",
在我们的应用程序中,我们实际上有两个主干SPA应用程序。第一个是为未经身份验证的用户提供登录、注册和其他功能。这个的URL应该是这样的。登录后,您将被重定向到我们的主主干应用程序
在我的主UI应用程序中,我正在使用Backbone.history而不使用pushState。应用程序文件类似于:
define(function (require) {
var App = new Marionette.Application();
App.addInitializer(fu
我正在使用带有Backbone.js和Marionette.js的Kendo UI treeview。treeview位于视图组件内,在一个区域运行良好。首先,我在调用view render方法时初始化treeview
View.myPanel = Marionette.ItemView.extend(
render: function () {
this.treeview = this.$el.find("#treeview").kendoTreeView({
我正在尝试嵌入带有主干胸部/把手的子视图,我的代码如下:
看法
模板
<div>{{view child}}</div>
和堆栈跟踪:
Uncaught TypeError: Cannot read property '_helperName' of undefined thorax.js:948
getParent thorax.js:948
(anonymous function) thorax.js:983
(anonymous function) VM218:1
我正试图利用FluentAutomation.SeleniumWebDriver和NUnit为基于RequireJS的主干应用程序编写一些UI测试。所讨论的HTML页面包含一个典型的datamain属性,用于加载应用程序的RequireJS模块。我的任务是正确地检测应用程序何时满载这些工具;到目前为止,我唯一能够始终如一地工作的就是使用显式的秒等待,如下所示:
I.Open("http://myapp")
.Wait(5)
.Enter("foo").In("input[name
在过去的几周里,我一直在学习backbone.js,即将开始在我正在编写的应用程序中愤怒地使用它。我的问题是关于Bootstrap3NavBar中模型和集合的用例
在我的服务器端,我对用户进行身份验证,并根据他们的个人资料,为他们分配角色作者、编辑、管理员等。。然后,我构造一个对象,该对象包含适合用户角色的菜单结构,并使用手柄将其传递给客户端。其目的是让浏览器构造HTML,以便根据对象中的属性键/值使用主干来呈现菜单
我的想法是,navbar本身就是navbar模型的集合;导航栏上的每个下拉菜单
以下是我的行为:
define(['marionette'], function (Marionette){
'use strict';
var Filter = Marionette.Behavior.extend({
events: {
'keyup @ui.filter': 'onFilter'
},
defaults: {
field: "name"
},
如何定义CompositeView
define(function (require) {
"use strict";
var _ = require('underscore'),
Marionette = require('backbone.marionette'),
Row = require('app/views/Dam/row'),
tpl = require('text!t
如果单击链接,我的主干路由器工作正常,但在尝试直接访问URL或刷新页面时不工作
路由器
var app = app || {};
var appRouter = Backbone.Router.extend({
routes: {
"blog": "blog",
"blog/post/:id": "blogPost",
"faqs": "faqs",
"*other": "defaultRoute"
}
});
我试图在我的主干应用程序中创建一个下划线模板,但我的作用域必须关闭或其他什么,因为下划线认为我的变量没有定义。我收到“未捕获引用错误:未定义字典”
以下是模板代码:
<script type="text/template" id="new_template">
<table class="table striped">
<tbody>
<% _.each(dictionary, fu
我一直遇到过时集合引用的问题。因此,我有以下模型:
ProcessModel = Backbone.Model.extend({
initialize: function() {
this.set('steps', new StepsCollection());
}
...
});
从服务器获取ProcessModel时,也会返回StepsCollection。以前,我有以下解析方法:
parse: function(response) {
..
当我尝试在没有托管的情况下打开单页应用程序时,换句话说,我通过文件->打开直接在浏览器中打开index.html。我的电脑上有交叉原点错误!文本“模板”文件如下所示:
file:///Users/thegreyspot/' . clipped . '/videoIframeTemplate.html. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extensio
我在下划线.js模板中有这段代码
有谁能帮助我如何使用handlebar.js模板而不是下划线来编写它
<% _.each(cruds, function (crud) { %>
它获取一个crud列表,并按如下方式显示
<tr>
<td><%= crud.id %></td>
<td><%= crud.name %>&
我在加载带有RequireJS的主干视图集合时遇到问题,因为它们的加载顺序不正确
下面是我试图实现的一个简单示例—一个页面通过一组小部件循环,并使用其“模板”属性获取其主干视图。重要的是,这些都是按顺序显示的,而它们目前是按随机顺序显示的
page.js
collection.each(function(widget) {
require(['order!views/widgets/' + widget.get('template')], function(WidgetView) {
我已经使用主干路由器做了一些工作示例,但是有没有办法保护直接在地址栏上使用的路由?此外,当用户按下浏览器上的“后退”按钮时,路由不会被清除,并产生问题。最好的解决方案是什么?我想我明白你的意思了-你想强迫用户通过某个(主页)页面进入你的网站。对吗
这很有用,例如,当你正在构建一个移动优化的web应用程序时,你总是希望用户通过启动屏幕进入。我要做的是为我的路由器设置一个“legitEntrance”属性,并在每条路由上检查它,如下所示:
APP.Router = Backbone.Router.e
由于某种原因,以前工作正常的haveel和events绑定现在停止正常工作
我曾经:
User.HeaderView = Backbone.View.extend({
el: '#header',
template: _.template($('#header-template').html()),
events: {
"click .login": "login"
},
initialize: function(parentView) {
我开发了一个非常简单的Backbone.JS应用程序,用于学习CoffeeScript+Backbone.JS:
class Todo extends Backbone.Model
defaults:
title: ''
priority: 0
done: false
class Todo extends Backbone.Collection
model: Todo
localStorage: new Backbone
我有一个奇怪的问题,到目前为止我还没有弄清楚。这很简单,这可能就是我遇到麻烦的原因:)
首先,这是路由表
routes: {
'': 'root', //called
'report': 'report', // called
'report/add': 'reportAdd', // not called
'report/print': 'reportPrint', // not called
'report/settings': 'reportSett
我需要在运行时将urlRoot传递给模型,因为模型的几个不同类使用不同的urlRoots
这是我的模型:
App.Models.Table = Backbone.Model.extend({ });
下面是我将使用它的地方:
var m = new App.Models.Table();
var t = new App.Collections.Tables(m, { url: this.url });
var tables = new App.Views.Tables({ collection
在我的项目中,我无法从另一个主干视图触发在一个主干视图中注册的单击事件。实际上,我有一个文件类型输入,对用户隐藏,我需要触发文件类型输入
var FileView = Backbone.View.extend({
....
events : {
"click .delete-image" : "deleteFile",
}
....
});
var FilesView = Backbone.View.extend({
....
events : {
"click #atta
我正在一个新的Require/Backbone应用程序上进行初始设置,我似乎无法让我的“全局资源”对象与一些子模块通信。我怀疑这与循环依赖有关,但我不确定在哪里/为什么/如何
在configure.js中加载所有填隙项目后,应用程序将启动:
/* kick off */
define([
'cxn/newUI/rr',
'cxn/newUI/routers/mainRouter'
], function( app, MainRouter) {
// create ro
我正在努力理解如何使用主干路由器和视图。我想要一个URL,比如:index.html/products/list,首先调用一个通用视图,将基本页面支架插入DOM,并显示全局徽标之类的项目。然后调用products视图,该视图插入一些通用的ProductDOM元素。然后调用列表视图,该视图显示产品列表
如果我这样做:
var router = Backbone.Router.extend({
initialize : function() {
new HeaderVi
下面是我用(FacetModels)填充我的收藏的内容
如何访问AvailableValues[]数组
“面模型”:[
{
“FacetDisplayLabel”:空,
“SelectedValues”:[],
“可用价值”:[],
“未知结果”:0,
“ActionURI”:null,
“FacetGroupName”:“类别”,
“FacetGroupFriendlyId”:“SourceCategory”,
“组顺序”:10,
“AllowSuggestions”:false
},
这是我
我的model.destroy方法在主干中正常工作时遇到问题。这是我的职责
deleteEvent: function(){
var self = this;
var check = confirm("Are you sure you want to remove record " + this.model.get("ticket_id"));
if (check == true){
this.model.id = this.model.get('sess
我试着跟随Brian Mann制作的优秀教程Backbonerail。不幸的是(对我来说,因为我是个疯子),他在用咖啡脚本。令人困惑的是我对以下代码的假设:
class App.Views.Users extends Backbone.View
我认为这相当于:
Users = Backbone.View.extend({});
在纯javascript中。但是,当我将coffeescript代码放在TryOffeeScript中时,我得到:
var _ref,
__hasProp =
我遇到的问题是,单击事件不断堆积(更改视图后仍然附加)。我已经修复了这个问题,只使用了视图的一个实例(如下所示)。我认为当标记被更改时,主干会删除事件。我对其他观点没有这个问题
代码错误:随着更多视图的创建,点击事件不断堆积在loadPlayerCard上
//Player Thumb View
PgaPlayersApp.PlayerThumbView = Backbone.View.extend({
events: {
'click': 'loadPlayerCard
我似乎找不到任何关于这方面的文档,玩弄代码并没有帮助我完全理解这一点
我有主干模型,在我的模型中,我将一个处理程序绑定到模型更改事件:
var myModel = new ModelA();
var myView = new ViewA({
model: myModel
})
//in my view I have
this.listenTo(this.model, "change", this.handleChange);
有人能给我解释一下传递给this.handleChange的
我的主应用程序有一个自定义区域,允许我进行页面转换。这适用于一种过渡样式,但我如何为该区域创建不同的过渡呢
我们可以在同一个区域上设置多个regionTypes吗?或者我必须将转换类型传递到修改后的木偶区域显示函数,然后从那里开始。任何帮助都将不胜感激,谢谢
App.addRegions {
main: {
selector: "#page",
regionType: Fold
是否可以使用BackGrid构建自定义单元格vía格式化程序,从隐藏列组成值
var grid = new Backgrid.Grid({
columns: [
{
name:"half_value_1",
cell:"string",
rendered: false
},
{
name:"half_value_2",
cell:"string",
rendered: false
},
{
name: "compos
我们在继承方面遇到了麻烦
var MyModel = Backbone.Model.extend({
initialize: function() {
this.tables = new MyOtherCollection();
this.tables.parent = this;
}
});
我们看到的其他示例使用super,但除了在运行时,我们没有在任何地方定义它
MyModel.fetch()
我们得到
Maximum call stack size exceeded
假设一个用户正在浏览一个页面,检查并选择项目。
我有一个主干模型对象,每次用户选择我想要更新的对象时
我将其保存在一个单独的JavaScript文件中,该文件源于我的HTML:
var app = {};
var newLineup = null;
var team = document.getElementsByName('team');
app.Lineup = Backbone.Model.extend({
defaults: {
team: team,
因为我使用requirejs来保持代码模块化,所以我希望能够访问视图中的路由器实例
window.appRouter = new Router({ controller: this.routerController });
显然,我不想使用Windows,但仍然可以在我的应用程序中使用路由器
做这件事的最佳实践或木偶方式是什么?您可以将路由器存储在应用程序实例上
例如,您在应用程序启动时对路由器进行实例验证:
onStart: function() {
this.router = ne
我正在尝试构建一个简单的基于Twitter的主干应用程序,该应用程序将显示最近推文的概述
在经过身份验证的用户帐户的用户时间线中,
但每次我运行该应用程序时,都会有20条tweets从twitterapi返回,并且会出现垂直滚动
我不喜欢的浏览器窗口。
我如何限制页面上出现的推文数量,而不是20条推文
例如,我如何加载6条推文,并使页面底部的链接加载其余的推文。
我的代码如下:
我的收藏:
define(['backbone', 'app/model/Tweet'], function(Back
这是设计问题。请推荐我
我们正在使用backbone.js框架。我们需要大量的动态表单生成(可能是几个动态bootstrapform向导)
为了处理表单验证和提交方法,我必须将javascript代码附加到html代码中。这是正确的吗
有没有更好的写作方法
谢谢,
Raja K您不必在生成的html中附加任何js代码。您的请求通常是通过创建一个Backbone.View(包含所有交互js代码)来完成的,该视图动态生成表单html并将其附加到DOM中
是一个框架,您可以使用它来简化此过程,请参见下
我有一个包含路由器文件和一些视图的应用程序,我还使用它向路由添加视图,并向视图添加模板。这是我的密码:
routes.js
var AppRouter = Backbone.Router.extend({
routes: {
"": "getLogin",
"login": "getLogin",
"register": "getRegister",
"forget-password": "getForgetPassword"
},
getLogin: funct
上一页 1 2 ...
5 6 7 8 9 10 11 ...
下一页 最后一页 共 124 页