- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
单击“点击次数”链接可以看到控制台显示更新后的模型数据,但原始显示的 HTML 没有变化。
在 LayoutView 上更新模型似乎不会导致 View 更新显示的数据。我认为这是 View 和模型之间默认交互的一部分。
最佳答案
Backbone 和 Marionette 不会自动将模型数据绑定(bind)到 View 。您将必须监听该模型以在 View 中更改并更新它。
例如,当模型中的任何数据发生变化时,您可以简单地完全重新渲染 View :
initialize: function(){
this.listenTo( this.model, "change", this.render );
}
或者为某条预期会发生变化的特定数据创建监听器,只更新 View 的一部分。如果 View 更复杂,这是首选:
onRender: function(){
this.listenTo( this.model, "change:value", this.renderValue );
},
renderValue: function(){
/* This expects that you wrap the value with
<span class="value"></span>
in the template */
this.$('.value').text( this.model.get('value') );
}
这是一个完整的工作示例:
var TestLayoutView = Mn.LayoutView.extend({
template: '#lvTemplate',
el: '#app',
events: { 'click .watchhere': 'updateValue'},
onRender: function(){
this.listenTo( this.model, "change:value", this.renderValue );
},
renderValue: function(){
this.$('.value').text( this.model.get('value') );
},
updateValue: function (clickedView) {
this.model.set('value', this.model.get('value') + 1);
}
});
var testLV = new TestLayoutView({
model: new Backbone.Model({ value: 15 })
});
testLV.render();
<script src='http://code.jquery.com/jquery.js'></script>
<script src='http://underscorejs.org/underscore.js'></script>
<script src='http://backbonejs.org/backbone.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/backbone.marionette/2.4.2/backbone.marionette.js'></script>
<script type="text/template" id="lvTemplate">
<a class='watchhere' href="#">Clicks <span class="value"><%= value %></span></a>
</script>
<div id="app"></div>
关于javascript - 更新 LayoutView 的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33003806/
这是我的布局 View : define(["marionette", "lodash", "text!home/template.html"], function(Marionette, _, te
JSBin link 单击“点击次数”链接可以看到控制台显示更新后的模型数据,但原始显示的 HTML 没有变化。 在 LayoutView 上更新模型似乎不会导致 View 更新显示的数据。我认为这是
我正在学习 Backbone.Marionette,我需要了解如何使用 LayoutView 在模板中显示模型。 基于这个例子: 应用程序.js: //VIEWS ArticleView = Back
我看到 viewDidLayoutSubviews 和 UITableViewCells 发生了一些奇怪的事情。 我在一个页面上有 2 个表格,它们都调整了大小,因此它们不会滚动(所有元素都可见)。我
我正在布局 View 中加载预编译的 Handlebars 模板。我正在定义区域,但是出现错误: 未捕获错误:DOM 中必须存在“el”#questions-section(当然该节点存在于模板中)。
我当前正在尝试让 LayoutView 中的输入字段来跟踪它何时发生变化。 我的代码如下。 https://jsfiddle.net/nyTZU/10/ Price: Beds:
下面是我的 LayoutView 的层次结构 LayoutView > Region > CollectionView > ItemView > 复选框 如果我想在 LayoutView 级别监听复选
这是我的模板文件outerLayout.html: menu1 main content footer 这是我的outerLayout.js var $ = require
我有这个布局 View : var appLayoutView = Backbone.Marionette.LayoutView.extend({ template: function() {
我正在使用 Backbone.js 和 Marionette.js 构建一个表。我的模型集合在表中创建了行,这些行被插入到 中. 我想在表格顶部附加 1 行,这不属于我的收藏。这是先前定义的 Lay
我在渲染 Marionette LayoutView 和显示该布局内的区域时遇到问题。 我的布局文件: template: '#fooTemplate', regions: {
以下两种情况的优缺点是什么: 使用 LayoutView(例如 RelativeLayout/LinearLayout)并使用 Drawable 对象调用 setBackground(drawable
我正在尝试使用 Backbone 中的 ListenTo 方法来监听 subview 内、 Collection View 内以及 Collection View 父 LayoutView 内的触发器
我试图在不使用应用程序级区域的情况下渲染应用程序的布局 View (它们已被弃用)。 MyLayoutView = Marionette.LayoutView.extend({ el: 'bo
我们正在为我的应用程序使用 Backbone、Marionette 和 handlebars。当我尝试在 Marionette.Region 中呈现我的 View 时,一个额外的 div 环绕在模板周
我想使用 android studio 从我的设备中选择布局。但是当我尝试打开 Android Device Monitor 时,出现错误,提示“无法创建 View :com.android.ide.
我是一名优秀的程序员,十分优秀!