Sapui5 如何获取manifest.json中定义的模型的长度?
我在manifest.json文件('products')中定义了一个模型 manifest.jsonSapui5 如何获取manifest.json中定义的模型的长度?,sapui5,Sapui5,我在manifest.json文件('products')中定义了一个模型 manifest.json "dataSources": { "productsModel": { "type" : "JSON", "uri": "model/products.json" }, ... "models": { "products": { "dataSource": "productsModel" }
"dataSources": {
"productsModel": {
"type" : "JSON",
"uri": "model/products.json"
},
...
"models": {
"products": {
"dataSource": "productsModel"
}
{
"products": [
{
"Item": "1",
"AwdDate": "20160715",
"Hist": 171.9,
"Current": 183
},
{
"Item": "2",
"AwdDate": "20160701",
"Hist" : 144.3,
"Current": 158.6
},
{
"Item": "3",
"AwdDate": "20150701",
"Hist": 160,
"Current": 165
},
{
"Item": "1",
"AwdDate": "20160715",
"Hist": 201,
"Current": 167
},
{
"Item": "2",
"AwdDate": "20160801",
"Hist" : 175.3,
"Current": 178.2
},
{
"Item": "3",
"AwdDate": "20150721",
"Hist": 160,
"Current": 147
},
{
"Item": "1",
"AwdDate": "20160715",
"Hist": 175.9,
"Current": 185.2
},
{
"Item": "2",
"AwdDate": "20161101",
"Hist" : 165.3,
"Current": 158.2
},
{
"Item": "3",
"AwdDate": "201700101",
"Hist": 160,
"Current": 165
},
{
"Item": "4",
"AwdDate": "201600401",
"Hist": 173,
"Current": 177
}
]
}
在我的控制器中,我想访问“产品”模型的长度。但我得到“未定义”。我觉得这应该比较简单,但我还没有找到一个直接的答案
main.controller.js
var mainController = BaseController.extend("vizConcept.controller.Main", {
onInit: function(oEvent) {
this.getView().setModel(this.getOwnerComponent().getModel("products"), "products");
var oModel = this.getView().getModel("products");
this.getView().setModel(oModel);
//this logs as 'undefined'
console.log(oModel.length);
products.json
"dataSources": {
"productsModel": {
"type" : "JSON",
"uri": "model/products.json"
},
...
"models": {
"products": {
"dataSource": "productsModel"
}
{
"products": [
{
"Item": "1",
"AwdDate": "20160715",
"Hist": 171.9,
"Current": 183
},
{
"Item": "2",
"AwdDate": "20160701",
"Hist" : 144.3,
"Current": 158.6
},
{
"Item": "3",
"AwdDate": "20150701",
"Hist": 160,
"Current": 165
},
{
"Item": "1",
"AwdDate": "20160715",
"Hist": 201,
"Current": 167
},
{
"Item": "2",
"AwdDate": "20160801",
"Hist" : 175.3,
"Current": 178.2
},
{
"Item": "3",
"AwdDate": "20150721",
"Hist": 160,
"Current": 147
},
{
"Item": "1",
"AwdDate": "20160715",
"Hist": 175.9,
"Current": 185.2
},
{
"Item": "2",
"AwdDate": "20161101",
"Hist" : 165.3,
"Current": 158.2
},
{
"Item": "3",
"AwdDate": "201700101",
"Hist": 160,
"Current": 165
},
{
"Item": "4",
"AwdDate": "201600401",
"Hist": 173,
"Current": 177
}
]
}
我还使用本地JSON文件作为模型,并在清单文件中进行了配置。但问题是我们将在onInit中得到模型,而不是数据。它需要自己的时间来加载,然后添加数据 如果要在获取数据后执行任何操作,则意味着您必须在模型对象上附加事件RequestCompleted,如下所示
onInit: function() {
var model = this.getOwnerComponent().getModel("products");
this.getView().setModel(model , "products");
model.attachRequestCompleted(this._dataLoaded, this);
model.attachRequestFailed(this._errorWhileDataLoading, this);
}
_dataLoaded: function(oEvent) {
var model = this.getView().getModel("products");
console.log(model.getData().length);
}
_errorWhileDataLoading: function(oEvent) {
console.log("Error handling");
}
如果有任何错误,您可以从事件RequestFailed中获取