Odata SAPUI5-列出项目,查看模型排序问题
我正在进行多个OData实体集读取,并将结果推送到视图模型中 视图模型从问题集获取所有结果,成功后从类别集获取其他几个属性 在EditSurvey视图中,我要做的是加载视图模型中的所有数据(Odata SAPUI5-列出项目,查看模型排序问题,odata,sapui5,Odata,Sapui5,我正在进行多个OData实体集读取,并将结果推送到视图模型中 视图模型从问题集获取所有结果,成功后从类别集获取其他几个属性 在EditSurvey视图中,我要做的是加载视图模型中的所有数据(view>/Questions),并按CategoryDesc(从CategorySet推入)对结果进行排序 EditSurvey视图似乎在将CategorySet的结果推入视图模型之前尝试加载模型 有人知道我怎么分类吗 EditSurvey.view.xml 图中显示它获取CategoryDesc,但未按C
view>/Questions
),并按CategoryDesc
(从CategorySet推入)对结果进行排序
EditSurvey视图似乎在将CategorySet的结果推入视图模型之前尝试加载模型
有人知道我怎么分类吗
EditSurvey.view.xml
图中显示它获取CategoryDesc
,但未按CategoryDesc
排序:
图中显示了它是按问题集中的属性排序的,而不是按类别集
:
您可能实际需要的是服务元数据中
问题集
和类别集
的关联和导航属性:
...
...
通过导航属性将问题集
设置为类别集
下面是一个工作示例:
- 它使用具有Productn的⎯⎯⎯1类别
- 声明性地说出需要什么以及应该如何分类
- 不需要一行JS代码
进展如何?您能否按照下面的建议实现关联和导航属性?
<List
noDataText="{i18n>noQuestions}"
items="{
path: 'view>/Questions',
sorter: {
path: 'CategoryDesc',
descending: false,
group: true
}
}"
mode="SingleSelectMaster"
selectionChange="onQuestionSelect"
>
onInit: function() {
var oRouter = this.getOwnerComponent().getRouter();
oRouter.getRoute("EditSurvey").attachMatched(this._onRouteMatched, this);
// Intialise view model
var oModel = new JSONModel({
SurveyName: "",
SurveyDesc: "",
ReportingFrom: "",
Questions: [{ }]
});
// Set view model
this.getView().setModel(oModel, "view");
},
_onRouteMatched: function(oEvent) {
// Get URL parameters passed from Main Page.
var oArgs = oEvent.getParameter("arguments");
// Get view model
var self = this;
var view = this.getView();
var oModel = view.getModel();
var viewModel = view.getModel("view");
var viewData = viewModel.getData();
// Read QuestionSet, populate into view model
oModel.read("/QuestionSet", {
filters: [
new Filter("SurveyId", FilterOperator.EQ, oArgs.SurveyId)
],
success: function(oData) {
viewData.Questions = oData.results;
viewModel.setData(viewData);
// Read CategorySet, get CategoryId & CategoryDesc, populate into view model
return new Promise(function() {
_.each(viewData.Questions, function(result, index) {
var surveyModel = self.getView().getModel();
surveyModel.read("/CategorySet", {
filters: [
new Filter("CategoryId", FilterOperator.EQ, result.CategoryId)
],
success: function(oData) {
viewData.Questions[index].CategoryId = oData.results[0].CategoryId;
viewData.Questions[index].CategoryDesc = oData.results[0].CategoryDesc;
viewModel.setData(viewData);
},
error: function(oError) {}
});
});
});
},
error: function(oError) {}
});
// Read SurveySet, populate into view model
oModel.read("/SurveySet", {
filters: [
new Filter("SurveyId", FilterOperator.EQ, oArgs.SurveyId)
],
success: function(oData) {
viewData.SurveyName = oData.results[0].SurveyName;
viewData.SurveyDesc = oData.results[0].SurveyDesc;
viewData.ReportingFrom = oData.results[0].ReportingFrom;
viewModel.setData(viewData);
},
error: function(oError) {}
});
},