BackboneJS를 사용하고 있습니다. oData를 사용하는 WebAPI에서 데이터를 가져 오는 콜렉션이 있습니다. 데이터를 가져 오는 동안 oData $ filter를 사용하여 몇 가지 추가 매개 변수를 전달합니다.Javascript, BackboneJS, oData 요청시 작은 따옴표 사용
collection.fetch({
data: $.param({ '$filter': 'Filter1 eq ' + filter.get('filter1') +
' and Filter2 eq ' + filter.get('filter2') }),
//some more stuff...
})
나는 기본적으로 마법사를 실행하고 길을 따라이 필터 모델을 짓고 있어요 :
그것은이 같은 비트가 보인다. 이 필터 모델에서 나오는 모든 값은 문자열 값이거나 빈 문자열입니다. 필터 모델에서 get 메서드를 재정의하여 올바른 값을 얻도록했습니다. 비어 있지 않으면 문자열 값 주위에 작은 따옴표를 추가합니다. 비어 있으면 'null'이라는 단어가 포함 된 문자열 값을 반환합니다.
replacedapiurl?%24filter=Filter1+eq+%27filter1%27+and+Filter2+eq+%27filter2%27
: 내가 크롬과 파이어 폭스에서 수집, 다음과 같이 보일 것입니다 생성 된 요청을 가져 오는 경우 지금
{filter1: 'filter1', filter2: 'filter2'}
을 :
var Filter = Backbone.Model.extend({
get: function (attributes, options) {
var value = Backbone.Model.prototype.get.call(this, attributes, options);
if (value == '') return 'null';
else return "'" + value + "'";
}
});
내 모델은 다음과 같습니다 말 어느 것이 완벽하게 좋으며 파이어 폭스와 크롬 모두에서 훌륭하게 작동합니다. 내가 가지고있는 문제는 IE10에서는 이것이 작동하지 않는다는 것입니다. 몇 가지 이유로 생성 된 요청은 다음과 같습니다.
replacedapiurl?%24filter=Filter1+eq+'+filter1+'+and+Filter1+eq+'+filter1+'
IE9 모드로 설정할 때도 마찬가지입니다. IE8 모드로 설정하면 갑자기 작동하기 시작합니다.
이제 EncodeURI(), EncodeURIComponent(), escape()를 사용하고 오버라이드 된 get 메서드 내부와 $ .param 비트 내부에 작은 따옴표 앞에 '\'를 추가하려고 시도했습니다. 그러나 아무것도 작동하지 않습니다. '\'를 추가하는 것은 아무것도하지 않는, 모든 인코딩하지 이런 식으로 추가 된 '+'기호 인코딩입니다 :
replacedapiurl?%24filter=Filter1+eq+'%2520filter1%2520'+and+Filter1+eq+'%2520filter1%2520'
난 후 나는 무엇도 아니다.
왜 이런 일이 일어나는 지 알고 계십니까? 왜 IE 브라우저 버전간에 이러한 차이가 있습니까? 어떻게 해결할 수 있습니까? 나는 작은 따옴표를 '% 27'로 변환해야한다. 브라우저 고유의 코드를 쓰지 않아도된다.
편집 : 방금 IE9에서 상황을 점검 할 사람이 생겼으므로 정상적으로 작동하므로 IE10을 사용할 때와 IE9 모드에서 IE10을 사용할 때 작동하지 않습니다.
어쨌든 OptionView의 용도는 무엇입니까? 그것은 어떤 행동도, 당신은 단지 배열이나 부모 템플릿의 옵션에 대한 값을 포함하는 개체를 통해 루프 수 없어. – andho
사실, Marionette CompositeView와 ItemView를 가지고 놀고 있었는데 어떻게 작동하는지 보았습니다.하지만이 경우에는 옵션보기가 필요하지 않습니다. –