EDIT tl;모델 만 가져 와서 일부 유효성 검사 조건을 충족하는 컬렉션에 추가하고 싶습니다. 단일 모델 만 가져 오는 경우 model.validate()
메서드를 사용할 수 있지만 collection.fetch()
을 사용하면 model.validate()
이 호출되지 않습니다.내 백본 모델의 유효성 검사 메서드가 model.fetch에서 호출되었지만 collection.fetch에서 호출되지 않았습니다.
나는 githubist API를 사용하여 요주의 인물 (a la bl.ocks.org)을 만들고 있습니다. 나는 단지 "태그"파일이 기 스트를 표시하고 싶은, 그래서 난 내 요점 모델에 validate 메소드를 가지고 : 나는 GitHub의에서 하나의 요점을 가져올 때 제대로 작동
class Gist extends Backbone.Model
validate: (attrs, options)->
if attrs.files.hasOwnProperty("tags") is false
return "no tags file"
sync: (method, model, options) ->
options.timeout = 8000
options.dataType = 'jsonp'
options.validate = true
return Backbone.sync(method, model, options)
defaults: ......
parse: (data)-> ......
. 그러나 요점 모음을 가져올 때이 유효성 검사 메소드가 실행되지 않습니다.
class Gists extends Backbone.Collection
model: Gist
sync: (method, model,options) ->
options || options = {}
options.timeout = 8000
options.dataType = 'jsonp'
options.validate = true
return Backbone.sync(method, model, options)
parse: (response) ->
response.data
#more methods here, including initialize, comparator, and custom ones
지금이 행동은 내가 기 스트의 목록을 표시하고 때, 내가 "태그"파일 (아래 스크린 샷 참조)이없는 기 스트 샷을 얻을 수 있다는 것입니다. 그러나 잘못된 요지가있는 미리보기 이미지를 클릭하면 validate
메서드에서 반환 된 validationError
이 표시되기 때문에 표시되지 않습니다. (gist 모델의 fetch
메서드는 github에서 추가 정보를 얻기 위해 미리보기 이미지를 클릭 할 때 호출됩니다. 렌더링)
나는 그것이 태그 파일이없는 경우 모델이 collection.fetch
를 통해 컬렉션에 추가되지 않았는지 확인하기 위해 모델의 validate
방법을 사용할 수 있습니까?
컬렉션에서 파서 (구문 분석 함수)를 사용하여 원치 않는 모델을 필터링합니다. –
고맙습니다. 백 보네 - 페치 캐쉬 (backbone-fetch-cache)로 좀 더 교활한 뭔가가 진행되고 있다는 것을 깨달았습니다. 첫 번째 페이지로드시 모델의 유효성을 올바르게 검사했으며 이후의 새로 고침시 잘못된 모델 만 표시되었습니다. 그러나 collection.parse를 사용하면이 문제가 해결됩니다. – elsherbini