2014-01-07 3 views
1

У меня есть приморское приложение с главной страницей. На главной странице есть таблица, состоящая из списка записей tr. Когда пользователь нажимает на определенный элемент tr, я хочу вызвать компонент детали, который отобразит данные отдельной записи.Приморье, вызывающее компонент внутри javascript

Поскольку я не могу сделать tr элемент с callback или иметь его содержать якорь с обратным вызовом, я хочу tr «s onClick свойства иметь некоторый JavaScript which'll call: subcomponent. Когда я попробовал это, я получил сообщение об ошибке call: can only be used in callbacks and tasks.

Использование ajax - это обходной путь, однако он обрывает кнопку «Назад».

Edit:

В целом, я хотел бы знать, как установить функцию обратного вызова, как поведение для различных яваскрипта событий. Благодарю.

+0

Почему ваш TR не содержит якорь? –

+0

Html не позволяет целой строке таблицы иметь одиночный якорь, только 'td' разрешено содержать привязки. – user547057

ответ

2

Ну, вы не можете отобразить компонент в элементе tr, но вы можете добавить какой-либо якорь или другой элемент в один из его td-детей.

Для моего проекта я сделал примерно следующее: я добавил привязку к каждой строке специальным классом css, например. '.dblclick действия. У этого якоря есть нормальный Морской обратный вызов.

Затем я привязал обработчик dblclick к элементу tr, который выполняет что-то вроде document.location = $ (this) .find ('. Dblclick.ction'). Get (0) .href;

Я не близко к изображению Smalltalk, чтобы дать вам исходный код, но я надеюсь, что вы поняли: вы не используете Ajax, чтобы щелкнуть ссылку в этой конкретной строке, но вместо этого браузер должен перейти к обратный вызов, связанный с ссылкой в ​​этой строке. Вы могли бы сказать, что вы используете обработчик dblclick tr., Чтобы щелкнуть ссылку, а затем позволить нормальной работе Seaside выполнять свою работу. Никакой магии нет. Вы можете найти немного больше информации here.

Если вы не хотите, чтобы якорь был видимым, вы можете поэкспериментировать с тем, чтобы сделать якорь невидимым (display: none) или тому подобное.

Если вы немного дружелюбнее к эксперименту, вы также можете попробовать сохранить обратный вызов на сервере и отобразить его URL с идентификатором обратного вызова в качестве атрибута элемента tr и использовать обработчик dblclick для перехода по ссылке с этого атрибута извлеките значение атрибута в запросе с помощью attr().

Надеюсь, это полезно для вас.

+0

Этот подход работал для меня. Благодарю. Кроме того, я установил якорь, чтобы не иметь текстового оформления, и изменил его шрифт, чтобы он не выглядел как якорь. – user547057

2

Я забыл ответить на ваш первоначальный вопрос: вы не можете позвонить: из javascript. Но вы можете использовать трюк document.location, чтобы повторно использовать существующую ссылку для обратного вызова на странице, используя технику, описанную в моем первом ответе.