问题标签 [backbone-views]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1833 浏览

backbone.js - 一个backbone.js 模型可以包含多个集合吗?

我刚刚开始使用backbone.js,并试图围绕建模概念展开思考。我想使用主干 js 创建一个购物车应用程序,与第 3 方 REST api 接口(不是 rails,不能修改)。

这是 GET 购物车内容的 JSON 响应示例:

查看这个 JSON 数据,有诸如“product_total”和“shipping_total”之类的汇总数据,其中包含诸如“product_items”和“order_price_adjustments”之类的列表。甚至单个“product_items”也可以有“price_adjustments”的嵌套列表。

如何在backbone.js 中为这个购物车建模?我是否应该为我看到的每个散列(“product_item”、“price_adjustment”)创建一个模型,然后对这些模型的集合进行建模,然后制作一个包含这些集合以及聚合数据的篮子模型?我不知道如何处理这个......

0 投票
1 回答
389 浏览

backbone.js - Backbone 应该如何监听文件上传?

我使用隐藏的 iframe 和 javascript 编写了一个按钮文件上传来提交表单。我试图让主干在它成功时进行监听,这样我就可以为要插入页面的图像创建一个新的 div,但我对如何监听事件还很陌生。我的方法非常原始,所以反馈会很棒——

提交文件后,PHP 将上传到数据库,完成后会将“成功”发送到 iframe。

Backbone,当 Upload 被点击时,将在一定的时间间隔通过 Jquery 检查隐藏 iframe 中的 Success 或 Failed,然后在看到 html 中的文本后为视图创建一个新的广告。

这似乎是一种非常糟糕的处理方式,但我找不到优雅的解决方案。

0 投票
2 回答
496 浏览

backbone.js - 绑定时触发的主干事件

我需要将点击事件绑定到一定数量的特殊 div,应该绑定哪些 div 仅在运行时知道,所以我想简单地为所有这些特殊 div 设置一个类并将它们绑定到“事件”中,然后单击其中一个这些 div 会触发所有 div 触发然后我尝试在事件中使用变量,但这些变量仅在运行时知道,所以事实证明它们在绑定事件时未定义现在我使用 jQuery 在运行时绑定 Backbone 内的事件,但是每当我初始化视图时,事件就会立即触发

有人会解释为什么会发生这些吗?以及如何将事件绑定到动态生成的 div?

(我知道我可能不应该使用这样的主干视图......但这是要求的一部分)

0 投票
1 回答
99 浏览

javascript - Trouble accessing attributes in the template - all attributes apart from 'name' show error '[attributename] is not defined'

The problem is that all Object attributes apart from 'name' call the error 'id/url/whatever is not defined' in the console when accessed from the template. A template with just 'name' displays fine and shows the correct name, but as soon as I call a different attribute, eg. id or url, it breaks. The object passed to the view is a parsed static JSON file with all items sitting on the same level and accessible from the console with e.g. collectionName.models[0].get('id');

What has me confused is that the name attribute works, as if it is predefined somewhere in backbone/underscore code as a default.

Am I missing something very obvious? Since I can access the model data from the console, I think that there's something wrong with how the view itself handles the data, but I've tried rewriting it in a couple different ways and nothing seemed to make any difference.


All the relevant code.

Passed object format. This is also what collectionName.models[0].attributes; returns in the console.

}

Example template code:

The router code:

Views:

Model code:

Templates & Bootstrap

0 投票
4 回答
8729 浏览

javascript - 如何将参数传递给backbone.js中事件对象中绑定的函数

我需要为 Backbone 中的事件对象中使用的函数提供参数。

现在让 open 的定义为:

我将从另一个函数调用 open 并在调用时传递 id。因此,根据我是否通过 id ,我需要做不同的事情。如何在 Backbone 中执行此操作?目前,通过单击调用 id 时,我希望它是未定义的。但是传递了一个事件对象。

为什么会发生这种情况,我该如何传递论点?

0 投票
1 回答
1276 浏览

backbone.js - Backbone Model.set 不粘连?

在我的主干应用程序中,我有一个由模型支持的视图,并且我将模型存储在一个集合中。页面上有几个这样的视图,一次只能选择一个。因此,我有另一个视图,其中包含这些视图的集合。当用户单击未聚焦的视图时,视图将模型的“聚焦”属性设置为 true。模型上的集合触发了一个更改事件,该事件由视图本身(将焦点类添加到其 $el)ViewCollection 视图处理,该视图循环遍历集合中的所有视图并取消焦点中的任何焦点(除了刚刚点击的那个)。

当我以中等速度点击时,这一切都很好。但是,当我快速单击时,我发现模型的设置行为不一致。即,当我将模型的“focused”属性设置为true时,下一次点击事件显示该模型的“focused”属性仍然为false。

代码:

以下是上述日志语句的输出:

正如你所看到的,我先点击了 A,然后点击了 C。changed 事件被触发,View 和 Collection 的行为都正常。然而,在第二次点击时,A 的“focused”属性在它应该为真时却是假的。同样,这只发生在我非常快速地单击视图时。当我以正常速度单击时,我无法重现此问题。

任何帮助将不胜感激!

0 投票
2 回答
2481 浏览

javascript - Backbone.js - 访问父“集合”视图中的所有子视图

需要调用.delegateEvents()父“集合”视图中的所有子视图,以便在从页面中删除父视图然后将其重新打开后重新委托事件。

我可以看到两种方法,就正确的做法而言,这两种方法对我来说都不太正确:

  • 每当addOne(在父视图中调用 ) 时,将刚刚创建的子视图保存到列表中。当视图被添加回页面时需要稍后重新委派事件。使用数组向后滚动该列表并调用.delegateEvents()每个子视图项。这种方法的问题是创建一个单独的数组来保存视图中的所有内容,当视图已经有一个 Backbone 认可的方式来影响它的子视图时this.collection.each()
  • 使用视图内的内置View.collection.each()滚动浏览每个子模型。在每个模型上触发一个事件,导致其相应的视图调用.delegateEvents()自身。这种方法的问题在于,纯粹的面向视图的操作正在通过模型进行路由。

这些方法中的任何一种都好还是有更好的方法我应该这样做?

非常感谢!

0 投票
3 回答
247 浏览

html - 没有足迹的 HTML 元素,但可以是另一个元素的容器

是否有一个 HTML 元素,或者一个元素,当与正确的 CSS 样式属性结合使用时,除了可以用作其他元素的容器之外没有占用空间?

它几乎就像页面标记上的“标记”,实际的 HTML 应该由 jQuery 放置。

它可能是什么样子的示例:

我问的原因是因为我正在使用 Backbonejs,当我必须向屏幕添加视图时,我发现我要么必须指定在创建视图时应该将视图挂钩的元素,这有其缺点:

或者我必须在现有元素中插入视图,通常是 div。这给模板带来了困难:

任何输入表示赞赏,非常感谢!

0 投票
0 回答
1277 浏览

backbone.js - 即使使用 delegateEvents() 重新渲染后,backbone.js 事件也不会触发

我有一个视图,里面有一个嵌套视图,当渲染时,它上面有一个链接,并附加了一个点击事件。我第一次点击所有链接,一切正常。但是当重新渲染所有视图时,链接事件就会消失。我尝试在重新渲染之前强制delegateEvents()渲染并删除视图,但没有。

这是我的代码:

0 投票
4 回答
1409 浏览

backbone.js - 引用一个集合的多个主干视图

我正在尝试创建我的第一个主干应用程序,并且在理解我应该如何使用视图时遇到了一些困难。

我想要做的是有一个搜索输入,每次提交它都会从服务器获取一个集合。我想让一个视图控制搜索输入区域并监听那里发生的事件(在我的示例中单击按钮)和另一个视图,其中包含用于显示搜索结果的子视图。每次新搜索都只是将结果添加到搜索区域中。

个别结果将有其他方法(例如查找他们输入的日期或时间等)。

我有一个这样定义的模型和集合:

在我看来,我有一个代表搜索输入的视图是:

我的 html 看起来大致是这样的:

在我的代码中,它可以console.log('starting new search');通过 ResultSetView 集合的初始化方法对服务器进行任何 ajax 调用。

我设计这个是正确的还是有更好的方法来做到这一点。我认为因为这两个视图绑定到不同的 dom 元素,所以我不应该从另一个视图中实例化一个视图。任何建议表示赞赏,如果我需要更清楚地说明这一点,请告诉我,我会尽力改写这个问题。