在 Backbone 中侦听和修改模型属性的正确方法是什么.js
What is the correct way in Backbone.js to listen and modify a model property
我有一个视图附加到一个属性为"title"的模型。我希望每次设置时都能修剪值(出于某种晦涩的原因,我不想在服务器端执行此操作)。在我的模型中,我尝试了这个:
this.on('change:title', this.trimName);
//... later on
trimName: function(){
console.log('triggered');
this.set({'title':$.trim(this.get('title'))}, {silent:true});
}
但这会触发无限递归。(另外,递归不会发生在jsfiddle上,为什么?
提前谢谢。
使模型进行修整:重写set
方法并在修整后运行Backbone.Model
的set
方法。
请注意,这并没有完全清除以处理对象文字,您需要 自己实现。 这将适用于
key, value, option
参数。查看set
示例 Backbone 源代码中的方法:http://backbonejs.org/backbone.js
set: function(key, value, options) {
var attrs;
// Handle both `"key", value` and `{key: value}` -style arguments.
if (_.isObject(key) || key == null) {
attrs = key;
options = value;
} else {
attrs = {};
attrs[key] = value;
}
options = options || {};
if ( options.trim ) {
attrs[key] = $.trim( attrs[key] );
}
// do any other custom property changes here
Backbone.Model.prototype.set.call( this, attrs, options );
}
相关文章:
- 有没有一种方法可以防止img get请求使用css或js发生
- 有条件更新d3.js力图中节点的最佳方法
- 在D3.js中,有没有任何方法可以将x和y方向上的滚动事件绑定到平移svg
- 有没有任何方法可以使用node-js从不同的机器打开浏览器
- 有没有比在app.js上绑定模块名称更好的方法来动态加载视图模型和视图以显示模态
- 有没有一种方法可以获得three.js的最小/lite版本
- Underscore.js某些对象的所有方法的总和
- node.js是否具有'match()'方法如果是,语法是什么
- 当数据库中的某些内容发生变化时调用HTTP方法Meteor.js
- 当用户点击动态创建的链接时,如何调用JS方法.JQuery,ASP.NET MVC
- 从React调用方法.JS州
- 从方法js中的函数获取对象属性
- 是否可以在 Vue 中嵌套方法.js以便对相关方法进行分组
- 主干 - 从我的原型视图调用方法.js
- $(这个).方法(js 或 jquery)
- 如何在噩梦中运行多种评估方法.js
- 如何从骨干中的集合调用模型的方法.js
- 如何在传单中使用 .off() 事件方法.js
- 检查这个的好方法和干净的方法?(JS+HTML)
- 使用爆米花迭代提示方法.js