2013-04-24 3 views
1

У меня есть компонент вроде tweetEnyo, созданный с помощью сценария enyo. И, основываясь на своем роде, я хочу выполнить какое-то действие.Как узнать «вид» компонента enyo?

Есть ли способ найти компонент, созданный в enyo во время выполнения?

ответ

3

Вы должны быть в состоянии получить доступ к kind свойства во время выполнения. Вот пример обнаружения видов товаров, выбранных:

http://jsfiddle.net/RoySutton/frTFK/

Если вам нужно найти его с помощью отладчика, вы можете использовать идентификатор с $ хэш глобального Эньо объекта. например .:

enyo.$.app_myKind.kind 

Не украсть гром от предстоящего в блоге, но в веб-инспектора Chrome/Firefox, $ 0 является последним инспектируемое элементом. Таким образом, enyo.$[$0.id].kind является видом проверяемого предмета.

Я заметил, что приложение не связано с ним в моем примере. Почему это так.

Обновление: приложение не было объявлено с определенным типом и вернется к виду по умолчанию для родителя, в данном случае Control. Вы можете получить доступ к этому значению с помощью .defaultKind. Кроме того, вы можете указать тип, используя фактические ссылки на вид (например, вид: enyo.Button), поэтому на .kind нельзя полагаться.

Правильный способ получить имя - использовать .kindName, который будет фактическим.

+0

Yup, inSender.kind действительно дает мне вид компонента. Хотя «enyo. $. App_myKind.kind», похоже, не работает, см. [This] (http://jsfiddle.net/frTFK/1/) –

+0

Как я уже упоминал, экземпляр приложения, похоже, не имеет вида, но если Я изменяю это на app_button, он отлично работает в этой скрипке. – Pre101

+0

Получил ваш момент. Я все еще удивляюсь, почему нет какого-либо способа просто узнать тип компонента простым методом, например ... someComp.getKind(). –

0

С сайта Эньо:

База 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/

+0

Спасибо за ответ LmC. Ну, это скажет мне, что это компонент enyo, но он не скажет мне, что это за компонент, в данном случае его «контроль». –

+1

Хорошо, а не писать правду? Сделайте что-то вроде enyo: componenttype? Если вы будете следовать за мной? – LmC

+0

это хорошая работа, но будет так много компонентов из других источников, которые мы все будем использовать, и будет громоздко добавлять этот атрибут в каждый, чтобы знать, что там типа. Должен быть какой-то метод по умолчанию, чтобы знать его вид. Я нашел кое-где, они пытались что-то вроде ... someComponentObj ['kind'] .. Но это не работает в моем случае. Хотя, someComponentObj ['name'] верно возвращает свое имя. –

Смежные вопросы