이것은 기본적으로 여기에 질문에 대한 해결의 재판이다 "How to use custom sorter in XML views"SAPUI5에서 컨트롤러의 목록 분류기를 설정하는 방법은 무엇입니까?
현재는 XML 뷰에 사용자 정의 분류기를 사용할 수 없기 때문에, 나는 컨트롤러에서 분류기를 설정할 수 있습니다 어쩌면 생각했다.
당신은 어떻게 그 JS보기는 다음과 같이이다와 함께 :
var oTemplate = ... // irrelevant
var oList = new sap.m.List({
id: this.createId("someList"),
items: {
path: "/list",
template: oTemplate,
sorter: foo.bar.CustomSorter
}
});
을 내가와 XML 뷰 것을 변환 할 때, 나는 다음과 같습니다 그런
<m:List id="someList"
items="{path: '/list'}">
<!-- hid ListItem implementation -->
</m:List>
방법 컨트롤러 목록에서 분류기를 설정할 수 있습니까? 또한 어디서 연결할 수 있습니까? 옵션 :
onInit
onBeforeRendering
onAfterRendering
그럼, 내가 기대하는 것은 같은 것이었다 :
sap.ui.controller("foo.bar.controller.SomeController", {
onInit : function(){
var oList = this.getView().byId("someList");
oList.get___Something___().setSorter(foo.bar.CustomSorter);
};
};
을하지만 수없는 것 같다.
흠, 그 작동합니다. 그러나, 내가 원했던 것은 XML 뷰에서 템플릿에 대한 정의를 유지하는 것입니다. 나는이 방법으로는 불가능하다고 생각합니다. 'bindItems' 호출에서 템플릿 매개 변수를 비워두면 다음과 같은 메시지가 나타납니다. '잡히지 않은 오류 : 요소의 집계 항목에 대한 템플릿 또는 팩토리 함수가 누락되었습니다.' 맞춤 분류기를 사용하면 결국 전체 JS보기의 애플리케이션. JS 코드에서 집계를위한 템플릿을 정의해야하는 경우 JS보기보다 XML보기에 이점이 없습니다. 답변 주셔서 감사합니다 –
경로 및 템플릿을 포함한 전체 바인딩이 아닌 * 분류기 *를 설정할 수 있는지 알고 계십니까? –
예, JS로 바인딩하는 대신 XML로 선언해야합니다. UI5의 향후 버전에서 수정 될 것으로 예상됩니다. 질문 : 바인딩 정의를 두 위치에 혼합 할 수 없다고 생각합니다. 마지막 정의는 첫 번째 정의보다 우선합니다. 또한 한 곳에서 바인딩을 정의하는 것이 더 명확합니다 (이 경우 컨트롤러에서). – kjokinen