Учитывая, что applications()
возвращает массив, как и settings()
, вы не можете написать:
$.observe(data.applications().settings(), "[]^*", ...
Если вы хотите настроить таргетинг на конкретное приложение, например data.applications()[0]
, вы можете написать:
$.observe(data.applications()[0].settings(), "[]^*", ...
Если вы хотите настроить все свойства настроек для любого приложения, вы можете написать:
$.observe(data.applications(), "[]._settings.[]^*", ...
Вы правы, что _settings
должен быть "внутренним". Намеченный дизайн действительно должен был позволить вам написать:
$.observe(data.applications(), "[].settings.[]^*", ...
но в настоящее время есть ошибка, которая мешает этому работать. Предстоящее обновление либо исправит эту ошибку, либо предложит несколько иной шаблон. На данный момент было бы лучше остаться с _settings
, который, во всяком случае, продолжит работать после следующего обновления. Также, после следующего обновления, обратите внимание на возможные новые темы документации по подстановочным знакам [].*
и другим связанным функциям ...
Кстати, если вы хотите прослушать изменения после изменения иерархии данных выше (например, массив applications()
- который вы можете изменить с помощью функции merge () для виртуальных машин), тогда вы будете Нужно поставить ^
на соответствующем уровне в пути, чтобы прослушать любые изменения ниже этого уровня. Например, вы можете написать
$.observe(data.applications(), "[]^_settings.[].*", ...
или
$.observe(data.applications(), "^[]._settings.[].*", ...
или
$.observe(data, "_applications^[]._settings.[].*", ...
Другим вариантом является **
подстановочный знак - который вы можете использовать на любом уровне, чтобы показать все изменения ниже этого уровня:
$.observe(data.applications(), "**", ...
или
$.observe(data, "**", ...
или
$.observe(data, "_applications^[].**", ...