我在使用来自Jackson
的一些数据初始化Backbone模型时遇到了问题。
收到的数据碰巧有listPropertyValue
,最初是对象的Java List
。在执行initialize()
方法时,我将其设为Backbone集合,没有太多问题。
但最终的SomeModel
构造函数还添加了一个名为listPropertyValue
的属性作为JavaScript数组,我不想这样做。
我如何丢弃或拒绝此阵列,哪种方法正确?
这是我的代码:
var SomeModel = Backbone.Model.extend({
defaults : {
id:null,
name:'',
order:null,
isRequired:null,
}
initialize : function(options) {
if(options.listPropertyValue !== undefined) {
this.set('collectionPropertyValue', new PropertyValueCollection(options.listPropertyValue))
}
// I thought of doing this. Don't know if it's the right thing to do
// this.unset('listPropertyValue', { silent: true });
}
我关心的不仅仅是如何做到这一点,而是如何以适当的Backbone方式做到这一点。
答案 0 :(得分:1)
(我假设你从某个地方的API获取这些数据。)
您应该在模型中定义parse
方法,仅返回您感兴趣的数据:
parse: function(response){
return _.omit(response, "listPropertyValue");
}
Backbone将为您完成剩下的工作:每次从数据接收API时,它都会自动调用parse
。
答案 1 :(得分:0)
我终于做到了。我使用了我发布的相同代码,但是直到我使用1.1.2版本的骨干(我使用的是1.0.0或类似版本)时它才起作用。
var SomeModel = Backbone.Model.extend({
defaults : {
id:null,
name:'',
order:null,
isRequired:null,
}
initialize : function(options) {
if(options.listPropertyValue !== undefined) {
this.set('collectionPropertyValue', new PropertyValueCollection(options.listPropertyValue));
}
this.unset('listPropertyValue', {
silent : true
});
}
}