on 03-09-2017 4:13 PM
I can't set a value in my input.
When I try do it the console shows error "Uncaught TypeError: Cannot read property 'setValue' of undefined"
The error is in the line "sap.ui.getCore().byId("InputValueHelp").setValue(oSelectedItem.getTitle());"
My Controller code is bellow
sap.ui.define([
'jquery.sap.global',
'sap/ui/core/Fragment',
'sap/ui/core/mvc/Controller',
'sap/ui/model/Filter',
'sap/ui/model/json/JSONModel'
], function(jQuery, Fragment, Controller, Filter, JSONModel) {
"use strict";
var CController = Controller.extend("sap.m.sample.InputStates.C", {
onInit: function () {
// set explored app's demo model on this sample
},
valueHelpRequest: function(oEvent) {
var model = new sap.ui.model.json.JSONModel();
var newurl = "http://services.odata.org/Northwind/Northwind.svc/Categories";
model.loadData(newurl, null, false, "GET", false, false, null);
// Handling of both confirm and cancel; clear the filter
var handleClose = function(oEvent) {
var oSelectedItem = oEvent.getParameter("selectedItem");
if (oSelectedItem) {
sap.ui.getCore().byId("InputValueHelp").setValue(oSelectedItem.getTitle());
}
oEvent.getSource().getBinding("items").filter([]);
};
// Create a SelectDialog and display it; bind to the same
// model as for the suggested items
if (!this._valueHelpSelectDialog) {
this._valueHelpSelectDialog = new sap.m.SelectDialog("valueHelpSelectDialog", {
title: "Categories",
items: {
path: "/value",
template: new sap.m.StandardListItem({
title: "{CategoryName}",
active: true
})
},
search: function(oEvent) {
var sValue = oEvent.getParameter("value");
var oFilter = new sap.ui.model.Filter(
"CategoryName",
sap.ui.model.FilterOperator.Contains, sValue
);
oEvent.getSource().getBinding("items").filter([oFilter]);
},
confirm: handleClose,
cancel: handleClose
});
this._valueHelpSelectDialog.setModel(model);
} else {
this._valueHelpSelectDialog.setModel(model);
}
this._valueHelpSelectDialog.open();
}
});
return CController;
});
var that=this;
var handleClose =function(oEvent){
var oSelectedItem = oEvent.getParameter("selectedItem");if(oSelectedItem){that.byId("InputValueHelp").setValue(oSelectedItem.getTitle());}
oEvent.getSource().getBinding("items").filter([]);};
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Can you help me in my another post? https://answers.sap.com/questions/150202/method-modelloaddata.html
Thanks
show me the view, and your ui5 version
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
this.byId("InputValueHelp").setValue(oSelectedItem.getTitle());
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Id of UI control is always prefixed with view id. At runtime it could be like '__xmlvie0--InputValueHelp', so you need to generate this id and access it
Store controller reference in a global variable from 'init' method
sap.ui.define([
'jquery.sap.global',
'sap/ui/core/Fragment',
'sap/ui/core/mvc/Controller',
'sap/ui/model/Filter',
'sap/ui/model/json/JSONModel'
], function(jQuery, Fragment, Controller, Filter, JSONModel) {
"use strict";
var _oController; //variable to store controller reference
var CController = Controller.extend("sap.m.sample.InputStates.C", {
onInit: function () {
// set explored app's demo model on this sample
_oController = this; ///set controller instance to global variable
},
Now changes your code to access UI element to below:
var sId = _oController.getView().createId("InputValueHelp"); //this creates id like '__xmlview0--InputValueHelp
sap.ui.getCore().byId(sId).setValue(oSelectedItem.getTitle());
(or)
_oController.getView().byId("InputValueHelp").setValue(oSelectedItem.getTitle());
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
In oData Model instantiation there is a option to set user id and password
manifest.json file, under sap.ui5 --> models
"models": {
"serverModel": {
"type": "sap.ui.model.odata.v2.ODataModel",
"settings": {
"user": <user id>,
"password": <password>
},
"dataSource": "testModel",
"preload": true
}
}
In a production scenario this is not advised, server should take care of this.
User | Count |
---|---|
86 | |
10 | |
10 | |
9 | |
6 | |
6 | |
6 | |
5 | |
4 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.