View确定模型的哪个属性被更改了
backbone.js View determine which attribute of model is change
我如何知道视图模型的哪个属性在渲染函数中被更改?(在渲染函数中,"e"是模型,但我只需要改变的属性。)我需要知道这一点,知道使用哪个模板。或者有其他方法可以做到这一点?
window.Person = Backbone.Model.extend({});
window.Njerzit = Backbone.Collection.extend({
model: Person,
url: '/Home/Njerzit'
});
window.PersonView = Backbone.View.extend({
tagName: 'span',
initialize: function () {
_.bindAll(this, 'render');
this.model.bind('change', this.render);
},
render: function (e) {
//if model name is changed, I need to render another template
this.template = _.template($('#PersonTemplate').html());
var renderContent = this.template(this.model.toJSON());
$(this.el).html(renderContent);
return this;
}
});
我相信changedAttributes
函数是您正在寻找的
changedAttributesmodel.changedAttributes([属性])
仅检索已更改的模型属性的散列。可选地,可以传入外部属性散列,返回属性在这个散列中,它与模型不同。这可以用来计算指出视图的哪些部分应该更新,或者哪些调用需要更新将更改同步到服务器。
或使用hasChanged
函数检查特定属性是否已更改
hasChangedmodel.hasChanged([属性])
自上次"更改"事件以来,模型是否发生了更改?如果传递属性,则返回true
var nameChanged = this.model.hasChanged("name");
- From Backbone Docs
你可以绑定到change:name
如果你只想通知如果名称已经改变:http://documentcloud.github.com/backbone/#Model-set
相关文章:
- 使用导航属性创建Kendo UI网格模型的问题
- 将输入值设置为ng模型属性[Angular]时出现问题
- 如何使用Undercore和Backbone在HTML中表示模型属性
- 主干中的模型属性未定义
- ng重复中的ng模型-初始化唯一作用域属性
- sails.js beforeCreate方法只接收required设置为true的模型属性
- 如何使用javascript访问sails.js模型中的属性
- 如何更改与Backbone集合中的模型相关联的几个元素的css属性
- 从骨干集合筛选模型,然后为这些模型设置属性
- Ember.js:未在组件'中渲染的模型的计算属性;关于变更的参考
- 当ng repeat上的复选框具有必需的属性时,角度ng模型将变为未定义
- 将属性模型复制到剪贴板
- Backbone JS Promises在模型上设置属性之前解析
- 比较主干中的两个模型属性
- 在ember.js中访问模型之外的计算属性
- 如何在sails.js中更改属性模型中的日期格式
- 如何使用setVisible()方法设置json模型中元素的可见属性
- MVC6将视图模型列表属性分配给javascript变量
- 更新淘汰视图模型属性时激发更改事件
- angularJS + 猫鼬: 类型错误: 无法读取未定义的属性“模型”