jQueryUI Модальное событие открытия и MVC.NET, вызывающее ошибку «.dialog не является функцией» - PullRequest
1 голос
/ 05 марта 2011

Я надеюсь, что кто-то может помочь, так как я в моем уме и заканчиваю этим. Я пытаюсь это сделать.

  1. «Перетаскиваемый» предмет помещается в область «Пропускаемый» (это работает)
  2. Это отправляет идентификатор элемента на мой контроллер, который возвращает тип элемента (это работает)
  3. Я передаю возвращаемое имя элемента функции, которая открывает модальное изображение и отображает частичное представление в модальном режиме в зависимости от конкретного элемента.

Последний бит, где проблема. Все вышеперечисленные шаги работают нормально, модал выталкивается, а частичное представление передается модалу. Но кнопка закрытия диалогового окна выдает ошибку «.dialog - это не функция», и после закрытия модального окна с помощью «x» в углу последующие попытки открыть модальное окно не сработают, если возникнет аналогичная ошибка.

Вот пример, с которым я работаю, чтобы попытаться заставить это работать.

$(function () {
        $('.draggable').draggable({ containment: '#imageboundry', revert: 'valid' });
        $('#droppable').droppable({
            drop: function (event, ui) {
                $.ajax({
                    type: "POST",
                    url: '/Home/AddToCart/' + $(ui.draggable).attr("id"),
                    success: function (data) {
                        getItemType(data);
                    }
                });
            }
        });
    });

    function getItemType(itemName) {
        $('#dialogs').dialog({
            open: function () {
                $(this).load("AdditionalContent", { itemName: itemName }, function () {
                    alert("This happened");
                });
            },
            modal: true,
            resizable: false,
            title: itemName,
            width: 400,
            autoOpen: false,
            buttons: {
                "Confirm": function () {
                    $(this).dialog('close');
                }
            }
        });
    }

Это мой контроллер, который возвращает частичное представление модальному

public PartialViewResult AdditionalContent(string itemName)
    {

        return PartialView("_" + itemName + "Attributes");
    }

Кнопка закрытия работает, как только я вынимаю бит open: function () { ... }, и я могу снова и снова открывать модальный режим, но как только я вставляю это обратно, появляется ошибка. Это, очевидно, причина, но я не могу понять, почему.

Заранее спасибо за помощь и извините за очень длинный пост.

UPDATE:

Я попытался инициализировать модальный в document.ready и вызвать его из моей функции "drop" в первой основной функции. Сделав это, я сузил его до этой строки кода, которая загружает частичное представление из моего контроллера. Без этой линии функционал работает. Любые идеи о том, что не так с этим.

$(this).load("AdditionalContent", { itemName: itemName }

Ответы [ 2 ]

1 голос
/ 06 марта 2011

Я понял это.В частичные представления был включен второй вызов библиотеки jQuery, который был добавлен автоматически при создании представления.Плюс это была версия 1.4.4, когда я использовал 1.5.1 прямо из Google на странице _Layout.Вторая библиотека jQuery явно нарушала функциональность, поскольку между двумя версиями возник конфликт.Только когда я посмотрел консоль FireBug, я заметил вторую загрузку библиотеки 1.4.4.

Спасибо всем за вашу помощь, чувствую себя немного идиотом, но извлеченным уроком ....пока что

0 голосов
/ 05 марта 2011

может попробовать это, но я не уверен

$('#dialogs').dialog({
     var self = this;
            open: function () {
                $(self).load("AdditionalContent", { itemName: itemName }, function () {
                    alert("This happened");
                });
            },
...