Sitecore 8 Speak UI - вызов Javascript кода страницы из ссылки на HTML-шаблон

Я работаю над ListControl, и в одном из столбцов есть ссылка Удалить, которую я форматирую с помощью HTMLTemplate следующим образом:

<a href="javascript: app.showConfirmation()" >Delete</a>

Мой Javascript выглядит следующим образом:

define(["sitecore", function (Sitecore) {
  var DestinationRules = Sitecore.Definitions.App.extend({
      initialized: function () {
          this.processDestinationRules();
      },
      showConfirmation: function () {
          alert('here');

      },

  });

  return DestinationRules;
});

По какой-то причине я не могу вызвать showConfirmation(). Это говорит, что не определено. Я даже пытался Sitecore.Speak.app.showconfirmation(), но не работает.

Я старался изо всех сил искать в Интернете, но не смог найти много помощи по поводу вызова функции через элементы управления, встроенные в HTMLTemplate.

Мой следующий шаг - вызвать DialogWindow.

Пожалуйста, если вы можете помочь мне с синтаксисом выше. Заранее спасибо.

2 ответа

Решение

Наконец-то удалось это сделать. Всегда знал, что так можно сделать, но не любил, как это делается.

Ссылка "Удалить" в элементе управления "Список" открывает диалоговое окно подтверждения. И если пользователь выбирает Да, то он вызывает app.onDeleteYes()

HtmlMarkup для столбца:

<a href="javascript:destinationRulePage.showDeleteDialog({{itemId}});">Delete</a>

Добавлена ​​кнопка под названием btnDelete с visibility установлен в false,

Добавлена ​​следующая функция, выходящая за рамки приложения:

var destinationRulePage = (function () {
    var self = this;
    self.showDeleteDialog = function (id) {
        $("button[data-sc-id='btnYes']").attr("data-sc-click",
            "javascript:app.onDeleteYes(" + id + ");");
        $("button[data-sc-id='btnDelete']").click();
    }
    return self;
}())

Это делает работу для меня. Благодарю.

Исправлено по-другому.

Я хотел показать встроенную кнопку Удалить в каждой строке списка управления. Не могу найти способ позвонить

javascript: app.showConfirmation()

Я изменил способ удаления записи:

  • Есть одна кнопка Удалить за пределами ListControl.
  • Включить / отключить кнопку Удалить на основе привязки ListControl.HasSelectedItem.
  • По нажатию кнопки Удалить вызовите showConfirmation()

На данный момент, кажется, лучший способ. Сам Sitecore использует аналогичный подход для "запуска" пользователей. Можно найти здесь:

/sitecore/client/Applications/LicenseOptions/KickUser

Надеюсь, это поможет. Благодарю.

Другие вопросы по тегам