Используйте плагин Nativescript Core в проекте Nativescript Angular - PullRequest
0 голосов
/ 01 мая 2019

Я использую в своем приложении Nativescript Angular плагин nativescript-google-maps-sdk, который прекрасно работает.

Моя проблема в том, что я хочу использовать кэшированные изображения для отображения в пользовательском информационном окне. Для этой цели я использую плагин nativescript-web-image-cache для всего приложения. Когда я использую обычный тег <WebImage> в информационном окне, он жалуется, что это не зарегистрированный компонент:

Модуль 'ui / web-image' не найден для элемента 'WebImage'

Повсюду в приложении это работает просто отлично. В этом выпуске предполагается, что:

что содержимое InfoWindowTemplate анализируется как Vanilla NativeScript XML, а не как Angular XML, поэтому он не может найти пользовательский Angular Component, который вы создали

Итак, вопрос в том, как я могу использовать этот плагин? Можно ли как-нибудь зарегистрировать компонент <WebImage>, чтобы он работал в пользовательском информационном окне?

Просто чтобы убедиться, что нет другой проблемы, я добавил плагин nativescript-web-image-cache в простой демонстрационный проект NativesScript nativescript-google-maps-sdk, а затем тег <WebImage> работает просто отлично.

Любые указатели высоко ценятся!

Ответы [ 2 ]

1 голос
/ 02 мая 2019
  1. Все, что зарегистрировано в Angular, не доступно в Core таким же образом; так что если вам нужно создать основной шаблон; Вы также должны передать xmlns:blah="ns-blah" как часть основного шаблона, чтобы он был правильно зарегистрирован в этом основном шаблоне. Угловой registerElement ничего не делает для Core. Теперь вы можете легко сделать <IC:WebImage xmlns:IC="nativescript-web-image-cache" ...> и тогда это будет действительным в шаблоне. Однако я бы порекомендовал вам поставить xmlns:IC на самый верхний элемент, который вы можете; поскольку это делает чтение кода намного проще. Но в тех случаях, когда у вас нет родительского элемента обтекания вокруг элемента, это допустимый код, чтобы зарегистрировать его в том же элементе, используя его.

  2. Шаблоны NS-Core отличаются от шаблонов NS-Angular; если вы попытаетесь использовать вещи, которые работают в Angular, такие как <IC:WebImage [param]="value" (param)="value"/>, то и [param], и (param) полностью нарушат синтаксический анализ шаблона в ядре. Парсер NS-Core похож на HTML, ничто не должно окружать param, а value должно быть в кавычках. value может иметь {{ boundvalue }} для привязки динамического значения к шаблону.

  3. Обычно при передаче шаблона NS-Core в любую нужную вам функцию; Вы хотите передать только минимальные части; вам редко нужно использовать такие вещи, как <Page>, <Frame> или любые другие элементы верхнего уровня. На самом деле это может вызвать проблемы. Обычно вам нужен только фрагмент макета, который вы хотите увидеть. Так что в этом случае <StackLayout xmlns:IC=...><IC:WebImage...></StackLayout>

  4. Наконец, при устранении неполадок с использованием основных функций в Angular; Я настоятельно рекомендую поместить фиксированные цвета ширины / высоты и фона на каждый элемент. Иногда это может показать вам, что не работает.

1 голос
/ 02 мая 2019

Поскольку содержимое InfoWindowTemplate анализируется как Vanilla NativeScript XML, вы можете добавить xmlns:IC="nativescript-web-image-cache" к корневому / родительскому элементу вашего компонента.Также используйте <IC:WebImage> вместо WebImage.

...