1

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

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

在渲染到视图之前对集合上的数据进行清理的最佳方法是什么。

这应该在视图还是集合上完成

4

1 回答 1

3

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

parse model.parse(response, options)
每当服务器返回模型的数据时,在获取和保存时都会调用 parse。该函数传递原始响应对象,并应返回要在模型上设置的属性散列。

例如,如果要替换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/

于 2013-04-18T10:22:29.983 回答