2014-02-13 2 views
0

У меня есть следующий код:Как выполнить функцию связи щелчку в DataView в ExtJS

xtype: 'dataview', 
//title: 'test', 
preventHeader: true, 
height: 100, 
bodyPadding: 10, 
tpl: new Ext.XTemplate(
    '<tpl for=".">', 
    '<a href="#">{name}</a>', 
    '</tpl>' 
), 
store: new RateManagement.store.ServiceStore(), 
itemclick: function(this, record, item, index, e, eOpts) { 
    console.log(this); 
} 

Я пытаюсь вывести текст выбранной ссылки на консоль; Однако, я получаю эту ошибку:

Uncaught SyntaxError: Unexpected token this

Вот jsfiddle:

http://jsfiddle.net/k4ggq/1/

Как я могу запустить код, когда пользователь нажимает на ссылку в окне просмотра данных?

Реф. http://docs.sencha.com/extjs/4.2.2/#!/api/Ext.view.View-event-itemclick

Редактировать: Это мой фактический код (немного отличный от jsfiddle).

xtype: 'dataview', 
itemSelector: 'a.serviceLink', 
tpl: tpl2, 
store: new RateManagement.store.ServiceStore(), 
listeners:{ 
    "itemclick": function(dataview, record) { 
     console.log(dataview); 
    } 
} 

И, переменная tpl2 определяется как:

var tpl2 = new Ext.XTemplate(
    '<tpl for=".">', 
    '<a href="#">{name}</a>', 
    '</tpl>' 
); 

ответ

3

Мэтт прав, вы не можете использовать «это» в такой функции. Кроме того, необходимо добавить его в качестве слушателя, как я сделал здесь: http://jsfiddle.net/k4ggq/2/

listeners:{ 
    "itemclick": function(dataview, record) { 
    console.log(dataview); 
    } 
} 

Это по крайней мере, журналы что-то на консоль.

UPDATE

При указании опции конфигурации «itemSelector», вы должны убедиться, что это отражено в вашей «TPL» вариант конфигурации. Например, если itemSelector является «a.serviceLink», ваш TPL должно быть что-то вроде:

new Ext.XTemplate(
    '<tpl for=".">', 
    '<a href="#" class="serviceLink">{name}</a>', 
    '</tpl>' 
) 

Пожалуйста, смотрите здесь рабочий пример: http://jsfiddle.net/k4ggq/4/

+0

Я вижу, что это работает на скрипке, но мой код немного отличается от этого примера. Я использую 'itemSelector'. По какой-то причине я ничего не заводил на консоль, и я не получаю никаких ошибок. Я обновил вопрос с помощью своего фактического кода. – user1477388

+1

Ну, элемент itemSelector, похоже, не имеет события «itemclick», поэтому, вероятно, поэтому он не работает! См. Документацию здесь: http://docs.sencha.com/extjs/4.2.2/#!/api/Ext.ux.form.ItemSelector У меня нет опыта работы с этим компонентом, поэтому я не уверен, что решение есть. У вас есть JSFiddle? – user1578653

+0

Да, вот скрипка http://jsfiddle.net/k4ggq/3/. В консоли нет ошибок. Я попробовал использовать код вашей скрипки, но ExtJS жалуется и говорит: «Вы должны указать« itemSelector »и« tpl ». – user1477388

1

Вы не можете использовать this в качестве имени переменной в функции, изменить его dataview или что-то:

itemclick: function(dataview, record, item, index, e, eOpts) { 
    console.log(this); 
} 
+0

Там нет ошибок, но ничего не вошедшего в консоль. – user1477388

+0

Как уже упоминалось в другом ответе, вам нужно добавить его в конфигурацию 'listeners'. – matt

1
xtype: 'dataview', 
preventHeader: true, 
height: 100, 
bodyPadding: 10, 
autoEl:{ 
    tag: 'a', 
    href: '', 
    onClick: 'nameYouFunction' 
} 
Смежные вопросы