2014-03-04 3 views
0

내 모델은백본 모델의 배열 속성에서 요소를 제거

var Storage = Backbone.Model.extend({ 
    defaults: { 
     q_category_id : 2, 
     dimension: [] 
    } 
}); 

내가 storageInfo라는 모델 인스턴스가

{ 
    "q_category_id":2, 
    "dimension":[ 
     {"q_id":1,"q_text":"...","data_type":"1","meta":"15","answer":"152"}, 
     {"q_id":2,"q_text":"...","data_type":"1","meta":"30","answer":"302"}, 
     {"q_id":3,"q_text":"...","data_type":"1","meta":"60","answer":"602"} 
    ] 
} 

가득하지만, 서버에 전송하기 전에 내가 할 모델을 원하는 가지고있다 like :

{ 
    "q_category_id":2, 
    "dimension":[ 
     {"q_id":1,"answer":"152"}, 
     {"q_id":2,"answer":"302"}, 
     {"q_id":3,"answer":"602"} 
    ] 
} 

q_text, 0123과 같은 속성을 제거하려면 어떻게해야합니까? 내 모델의 dimension 배열의및 meta?

+1

, 참조가 필요보다는 이렇게 복제로 새로운 모델로 복사됩니다 당신의'dimension' 배열은 놀라운 참조 공유의 대상이됩니다. 이런 경우에'defaults : function() {return {...}}'이 더 나은 접근법입니다. –

답변

1

당신은 아주 간결하게이 작업을 수행 mappick 방법 밑줄을 사용할 수 있습니다

storageInfo.dimensions = _.map(storageInfo.dimensions, function(obj) { 
    return _.pick(obj, 'p_id', 'answer'); 
}); 
1

당신은 net.uk.sweet에 의해 제안 선택을 사용하여 모델을 저장하기 전에 치수를 반복 할 수있다. 항상 필드를 반환 있도록 그렇지 않으면,이 모델의 toJSON 방법을 변경하려고 당신이 선호하는 것 :

defaults``에서 변경 가능한 개체주의
var Storage = Backbone.Model.extend({ 
    defaults: { 
    q_category_id : 2, 
    dimension: [] 
    }, 
    toJSON: function() { 
    var dims = _.pick(this.get('dimensions'), ['q_id', 'answer']); 
    return {q_category_id: this.get('q_category_id'), dimensions: dims} 
    } 
}); 
관련 문제