В конце концов, я все обдумал. Довольно запутанный, и давайте просто скажем, что я больше не буду вмешиваться в ExtJS, если смогу помочь.
Я использую Grid.RowExpander для размещения HTML внутри Grid с использованием XTemplate.
Поэтому мои ссылки довольно просты:
<a href="#" class="add_cart_btn" id="{product_id}" onclick="return false;">Add to Cart</a>
Где {product_id} из данных JSON, загруженных из Ajax-запроса. Это важно, как вы увидите ниже.
Найти эти события гораздо сложнее ... Сетка может сказать вам строку, но мне действительно нужно было извлечь элементы из таблицы внутри строки сетки. Длинная история, но я унаследовал часть этого кода.
Затем в своем родительском компоненте я прикрепил событие к самой Grid.
this.on({
click :{scope: this, fn:this.actionGridClick}
});
Чтобы найти фактическую ссылку, я ищу ссылку в целевом объекте, который имеет правильный класс. В этом случае "add_cart_btn"
actionGridClick:function(e) {
// Looking for a click on a cart button
var addCartEl = Ext.get(e.getTarget('.add_cart_btn'));
if(addCartEl) {
productID = addCartEl.id;
// Once we have the ID, we can grab data from the data store
// We then call to the server to complete the "add to cart" functionality
}
}
Скорее всего, это не очень полезно, за исключением моего случая, но это здесь для потомков, если кому-то понадобится нечто подобное в будущем.