Я новичок в SAPUI5, я хочу знать, как синхронизировать две модели. Я использую sap.ui.getCore(). SetModel() и sap.ui.getCore(). GetModel(), чтобы передавать данные между двумя контроллерами и между контроллером и его представлением. Теперь, если я изменю данные модели в одном контроллере, как я могу получить обновление во втором контроллере или в представлении.SAPUI5 - Как сохранить две модели в синхронизации
Ниже приведен пример структуры кода.
У меня есть customControl
sap.ui.core.Control.extend("CustomControl", { // call the new Control type "my.Hello"
// and let it inherit from sap.ui.core.Control
metadata : { // the Control API
properties : {
....
"dataProvider": {type : "any", defaultValue: new sap.ui.model.json.JSONModel()},
....
},},
render:function() {
//I am using dataProvider as a model for the Table which is inside this CustomControl
}}
В связи я использую, что CustomControl как это
var oCustomCotrol = new CustomControl("XYZ",{....dataProvider: this.getModel("ModelData"),....});
В контроллере я настройка ModelData
onInit: function() {
console.log("Init update Market");
var responseData = new sap.ui.model.json.JSONModel();
// Ajax call to fetch the data assign it to reponseData,
sap.ui.getCore().setModel(responseData,"ModelData")
},
данные изменяются но таблица в CustomControl не обновляется
Не уверен, что ваша фактическая проблема заключается в том, что ... если вы измените данные в модели, хранящейся в ядре, и оба вида/контроллеры используют эту модель, изменения отразятся и в обоих представлениях, и на контроллерах. – Qualiture
Никогда не видел, чтобы JSONModel использовался внутри пользовательский контроль ... не уверен, что ваш подход будет работать. Вместо этого почему бы не использовать стандартный подход и привязать свойство dataProvider к массиву - массив является свойством вашей внешней модели – Qualiture
@Qualiture Спасибо за ваш ответ, используя bindProperty, дает мне ошибку «Uncaught TypeError: Can not read property 'indexOf' undefined ", может быть, он застрял в жизненном цикле компонента. – Prateek