Я обдумывал внутренности и отношения между контекстом, contextbinding и bindingcontext в течение нескольких дней, и я не уверен, есть ли на моей стороне большое заблуждение. Может быть, некоторые из вас могут помочь мне разобраться. Я делаю свои предположения ниже. Сначала я могу сказать, что я всегда работаю с моделями oData.
Это то, что я считаю понимающим для чтения документации:
Контекст - это ссылка на объект данных в модели.
Связывание - это в основном поставщик событий, который (в случае односторонней привязки) наблюдает за состоянием конкретного контекста и испускает события при его изменении/загрузке данных... и поэтому позволяет регистрировать обработчики событий для событий в этом конкретном контексте, Что касается объектов программирования, есть привязки свойств и привязки списков (это правда - или список привязывает все, что когда-либо имеет значение?).
Во всяком случае, я понимаю, что привязка списка является модельной стороной связывания агрегации компонентов, тогда как привязка свойства называется связыванием свойств как с точки зрения компонента, так и с точки зрения модели (запутанной?).
Теперь я не совсем понимаю: привязка контекста new sap.ui.model.ContextBinding(oModel, sPath, oContext, mParameters?, oEvents?):
Принимает путь и контекст как параметр. Я предполагаю, что этот oContext - это не совсем контекст, описанный выше, а некоторые метаданные о привязке. это верно? Или это определение thep ath, которое имеет параметр пути относительно?
То, что также кажется странным, - это когда вы хотите создать сам контекст, new sap.ui.model.Contextabov(oModel, sPath, oContext)
снова принимает контекст. Я считаю, что это всего лишь неудачная игра, на которую я смотрю, но я не совсем уверен.
Тогда есть contextbinding и bindingcontext. Я предполагаю, что contextBinding является привязкой к определенному контексту, как описано e. И bindingtexttext - это метаданные в отношении привязки context- или списка.
С точки зрения программирования я не понимаю, почему следующие работы:
- создать привязку списка к контексту через
model.bindList()
передавая только путь. - присоединить обработчик события изменения привязки
- вызов
get_contexts()
при привязке - получать данные в обработчике события изменения (и видеть свойство oData-свойство, заполненное моделью).
и, похоже, нет никакого способа сделать то же самое для привязки свойства, которое я бы предположил, что могу генерировать с помощью model.bindProperty()
. Я могу сгенерировать привязку, но привязка, которую я получаю, кажется, не имеет дескриптора для фактического извлечения данных.
Надеюсь, этот вопрос объясняет мою проблему. Если вы спросите: что вы хотите сделать? Я на самом деле не хочу ничего с этим делать, я просто не совсем понимаю, как это работает. Привязка к элементам управления ui и т.д. Работает отлично, но я бы предпочел понять, что находится под капотом. Я немного читал файлы отладки и блок-тесты, но обсуждать их с вами, ребята, тоже замечательный способ.
Если это неясно, я с радостью добавлю все, что поможет.
Приветствие Мишель