javascript - Backbone js - 在传递给 View 之前使用集合(模型)上的正则表达式清理数据

标签 javascript backbone.js

我正在使用 backbone 来填充下拉列表。 API 的更改导致数据(选项标签)返回不需要的数据,例如“Option Foo - 00011222”而不是“Option Foo”

我打算使用正则表达式,这样我就只能显示“-”之前的第一个字符

在呈现给 View 之前清理集合中数据的最佳方法是什么。

应该在 View 上还是在集合上完成

最佳答案

如果附加数据可以安全丢弃,可以使用Model.parse修改您收到的数据:

parse model.parse(response, options)
parse is called whenever a model's data is returned by the server, in fetch, and save. The function is passed the raw response object, and should return the attributes hash to be set on the model.

例如,如果你想替换一个label字段:

var data = [
    {label: 'Option Foo - 00011222'},
    {label: 'Option Foo2 - 00011222'}
];

var M = Backbone.Model.extend({
    parse: function(data) {
        data.label = data.label.replace(M.regexp, '');
        return data;
    }
}, {
    regexp: /\s*-.*$/
});

var C = Backbone.Collection.extend({
    model: M
});

var c = new C(data, {parse: true});
console.log(c.pluck('label'));

还有一个演示 http://jsfiddle.net/nikoshr/xPJDr/

关于javascript - Backbone js - 在传递给 View 之前使用集合(模型)上的正则表达式清理数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16080059/

相关文章:

javascript - 点击市场时显示/隐藏圆圈

javascript - SequelizeJS HasOne 关联错误

javascript - 主干路由第一次未触发

javascript - 尚未使用 RequireJS 文本插件加载上下文的模块名称

javascript 事件处理程序在 django 内联表单集中无法正常工作

javascript - Angular ui 网格,更改 "Export all data as csv"的行为

javascript - 在 jQuery 中引用变量中的选项

javascript - 主干点击事件在 Collection View 中不起作用

backbone.js - 动态对backbone.js集合进行排序的正确方法

javascript - Ajax Post 请求返回 JSON 但延迟失败