У меня есть компонент вроде tweetEnyo, созданный с помощью сценария enyo. И, основываясь на своем роде, я хочу выполнить какое-то действие.Как узнать «вид» компонента enyo?
Есть ли способ найти компонент, созданный в enyo во время выполнения?
У меня есть компонент вроде tweetEnyo, созданный с помощью сценария enyo. И, основываясь на своем роде, я хочу выполнить какое-то действие.Как узнать «вид» компонента enyo?
Есть ли способ найти компонент, созданный в enyo во время выполнения?
Вы должны быть в состоянии получить доступ к kind
свойства во время выполнения. Вот пример обнаружения видов товаров, выбранных:
http://jsfiddle.net/RoySutton/frTFK/
Если вам нужно найти его с помощью отладчика, вы можете использовать идентификатор с $ хэш глобального Эньо объекта. например .:
enyo.$.app_myKind.kind
Не украсть гром от предстоящего в блоге, но в веб-инспектора Chrome/Firefox, $ 0 является последним инспектируемое элементом. Таким образом, enyo.$[$0.id].kind
является видом проверяемого предмета.
Я заметил, что приложение не связано с ним в моем примере. Почему это так.
Обновление: приложение не было объявлено с определенным типом и вернется к виду по умолчанию для родителя, в данном случае Control
. Вы можете получить доступ к этому значению с помощью .defaultKind
. Кроме того, вы можете указать тип, используя фактические ссылки на вид (например, вид: enyo.Button
), поэтому на .kind
нельзя полагаться.
Правильный способ получить имя - использовать .kindName
, который будет фактическим.
С сайта Эньо:
База enyo.Control работает так же, как в HTML-тег. Вы можете назначить классы и атрибуты и придать им стиль. Например.
new enyo.Control({content: "Hello From Enyo", classes: "foo",
style: "color: red", attributes: {tabIndex: 0}}).renderInto(document.body);
Так что вы можете сделать:
new enyo.Control({content: "Hello From Enyo", classes: "foo",
style: "color: red", attributes: {tabIndex: 0, enyo:true}}).renderInto(document.body);
который устанавливает Attr для Эньо истина и проверить это. Все, что есть, это компонент enyo.
Пример: http://jsfiddle.net/NKTRe/
Спасибо за ответ LmC. Ну, это скажет мне, что это компонент enyo, но он не скажет мне, что это за компонент, в данном случае его «контроль». –
Хорошо, а не писать правду? Сделайте что-то вроде enyo: componenttype? Если вы будете следовать за мной? – LmC
это хорошая работа, но будет так много компонентов из других источников, которые мы все будем использовать, и будет громоздко добавлять этот атрибут в каждый, чтобы знать, что там типа. Должен быть какой-то метод по умолчанию, чтобы знать его вид. Я нашел кое-где, они пытались что-то вроде ... someComponentObj ['kind'] .. Но это не работает в моем случае. Хотя, someComponentObj ['name'] верно возвращает свое имя. –
Yup, inSender.kind действительно дает мне вид компонента. Хотя «enyo. $. App_myKind.kind», похоже, не работает, см. [This] (http://jsfiddle.net/frTFK/1/) –
Как я уже упоминал, экземпляр приложения, похоже, не имеет вида, но если Я изменяю это на app_button, он отлично работает в этой скрипке. – Pre101
Получил ваш момент. Я все еще удивляюсь, почему нет какого-либо способа просто узнать тип компонента простым методом, например ... someComp.getKind(). –