- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我设置了一个主干模型,它使用单个项目 View 和模板来显示给最终用户。
但是,我在模型中添加了一个新属性,并且根据这个新属性的值,我想使用正确的模板/itemview。
我的主干代码如下:
InfoWell = Backbone.Model.extend({});
InfoWells = Backbone.Collection.extend({
model : InfoWell
});
InfoWellView = Backbone.Marionette.ItemView.extend({
template : "#template-infowell",
tagName : 'div',
className : 'alert alert-custom',
initialize: function () {
this.$el.prop("id", this.model.get("datetime"));
},
});
InfoWellsView = Backbone.Marionette.CompositeView.extend({
tagName : "div",
id : "info-well-list",
template : "#template-infowells",
itemView : InfoWellView,
});
MainJs.addInitializer(function(options) {
var aInfoWellsView = new InfoWellsView({
collection : options.InfoWells
});
MainJs.InfoWellsContainer.show(aInfoWellsView);
});
var InfoWells = new InfoWells();
所以,在某个地方(在复合 View 中?)我需要单独说一些内容:
if (this.model.get("infotype") === "blog") {
// use different template (#template-blogwell)
}
这可能吗?我可以在我的 itemview 中定义两个模板并在那里选择正确的模板,还是我需要两个 itemview,然后在我的合成 View 中说出要使用哪一个?
谢谢!
最佳答案
Marionette JS 文档 here 对此进行了介绍:
There may be some cases where you need to change the template that is used for a view, based on some simple logic such as the value of a specific attribute in the view's model. To do this, you can provide a getTemplate function on your views and use this to return the template that you need.
重用您的代码,
InfoWellsView = Backbone.Marionette.CompositeView.extend({
tagName : "div",
id : "info-well-list",
template : "#template-infowells",
itemView : InfoWellView,
getTemplate: function () {
if (this.model.get("infotype") === "blog") {
// use different template (#template-blogwell)
}
}
});
关于javascript - Backbone : Rendering different ItemViews based on model value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23628479/
我有一个显示为 CompositeView 的工具集合。此集合中的每个呈现项都是一个 ItemView。保存这些的区域的名称称为 toolNameRegion。 我在该页面中有另一个名为 toolDe
我有一个 RecyclerView,我在其 View 持有者构造函数中添加了一个 onGlobalLayoutListener,如下所示 public CustomViewHolder(final V
我的结构非常简单 ProductsList.TileListView = Marionette.CollectionView.extend({ tagName: 'section',
我有一个用于表的 CompositeView。我在子 ItemView 中为每一行设置了触发器... var TableRow = Marionette.ItemView.extend({ t
我有这个代码 http://jsfiddle.net/QRcF5/2/ $(function() { var Header = Backbone.Marionette.ItemView.ext
我正在使用 Backbone、Marionette 和 RequireJS 制作应用程序,但我在使用 Marionette 的 ItemView 时遇到了问题。我正在尝试渲染模板,但总是会抛出错误。
我对主干js不太陌生,但是我想将一些参数传递给itemview的“事件”部分中的事件回调。我知道回调可以像{“事件选择器”:“回调”}一样添加。但需要将参数传递给函数“回调”。我想在回调中执行 ite
我很难解释我在寻找什么,所以我将从代码开始。 我有这样的 Marionette View : Marionette.ItemView.extend({ model: new Models.Ca
我的 View 结构从布局移动到 ItemView,如下所示 Layout -> CollectionView -> ItemView。在我的布局 View 中,我根据某些条件添加了 onShow 区
我正在使用 Marionette/Backbone 开发一个应用程序。该应用程序需要通过 AJAX 调用上传文件(使其正常工作)。我想向用户提供反馈,告知他们何时能够选择上传的文件并继续修改它。当我有
我正在尝试从 RecyclerView 中检索所有复选框以取消选中它们。但是,显示了此错误。下面是LogCat指向的类。 java.lang.IllegalArgumentException: ite
这是我的 ItemView 的代码片段: class List.GridRow extends Backbone.Marionette.ItemView tagName: 'tr' trigg
我第一次玩 Marionette 。重新呈现 ItemView 后,它们的事件未触发。简单示例: App = new Marionette.Application; App.addRegions({
我正在尝试使用 onClose 事件在删除 View 之前清理它;尽管由于某种原因它永远不会被调用。我尝试过调用region.empty、region.reset,在该区域中显示一个新 View ,甚
我想从 Marionette.ItemView 访问 app.vent。 也许可以选择将参数 (app.vent) 从 Marionette.CompositeView 传递到 Marionette.
我正在尝试延迟加载 Marionette ItemView 的模板,但事情没有按我预期的方式工作。根据有关如何重写 getTemplate 方法的一些提示,我执行了以下操作: getTemplate:
我试图在 Marionette itemview (List.SendQuestion) 中触发一个事件,但是,我无法在 Controller 中注册触发器(如下所示) 本质上,在单击“a.send”
我目前有一个复合 View ,我希望每个 ItemView 都根据其索引进行呈现。 例如,我想向每三个 ItemView 添加一个类。 我倾向于的解决方案是更改 appendHtml() 以每三次向
我有一个 ItemView,我在其中使用了 clearSearch() 函数。我需要在另一个 ItemView 中调用相同的函数,所以为了让它保持干爽,我尝试调用 clearSearch(),但没有成
我正在尝试创建一个 RecyclerView,它带有垂直列表,可以捕捉到第一个项目。为了解决这个问题,我将以下 SnapHelper 类添加到 RecyclerView 中。 public class
我是一名优秀的程序员,十分优秀!