#sapui5
#sapui5
Вопрос:
Скажем, есть sap.m.table, элементы которого привязаны к модели JSON — «/rows». Вне макета sap.m.table есть панель инструментов, которая содержит кнопку «Добавить» для добавления строк в таблицу. Кнопка «Добавить» добавляет строки в таблицу, используя метод setProperty модели. Теперь требуется отключить кнопку «Добавить», когда длина модели JSON «/ rows» достигла 10. Как нам создать обработчик для наблюдения за изменениями свойства «/ rows» JSON-модели? https://sapui5.netweaver.ondemand.com/1.52.22/#/api/sap.ui.model .Model/events/PropertyChange утверждает, что в настоящее время событие запускается только по причине sap.ui.model.Причина изменения.Привязка, которая запускается, когда происходят двусторонние изменения значения привязки свойства.Это означает, что обработчик событий PropertyChange не запускается при вызове setProperty() JSONModel . Есть ли выход, при котором мы можем наблюдать изменения изменений свойств JSONModel — в данном случае, свойства «/ rows» JSONModel?
Ответ №1:
Ну, я могу придумать несколько способов добиться этого
1. Привязка стандартного представления форматирование:
Вид
...
<Button text="Add" press="onPressAdd" enabled="{path: '/rows', formatter: '.isAddEnabled'}" />
...
Контроллер:
Controller.prototype.isAddEnabled = function(rows) {
return rows amp;amp; rows.length < 10;
}
2. Привязка выражений (чистый xml)
...
<Button text="Add" press="onPressAdd" enabled="{= ${/rows/length} amp;< 10 }" />
...
3. JSONPropertyBinding (чистый javascript)
Вы можете вызвать свойство BindProperty в JSONModel, чтобы создать привязку свойства, которую можно отслеживать для изменений:
https://sapui5.hana.ondemand.com/#/api/sap.ui.model.Модель / методы/Свойство BindProperty
https://sapui5.hana.ondemand.com/#/api/sap.ui.model.json.JSONPropertyBinding
Controller.prototype.onInit = function() {
var model = this.getMyJsonModel();
var button = this.getView().byId("myButtonId");
model.bindProperty("/rows").attachChange(function(event) {
button.setEnabled(event.getSource().getValue().length < 10);
})
}
Комментарии:
1. Третий метод привязки к модели JSON, похоже, работает для добавления строк, но не при их удалении.