Модуль начальной загрузки AngularUI. Проблема области

Я довольно новичок в AngularJS, и я пытаюсь создать список с «Draggables», который вы можете добавить в 4 списка, которые можно сортировать. Я заставил это работать с AngularUI-Sortable.

Теперь для следующей части я пытаюсь отредактировать содержимое (дополнительные параметры и настройки в функции). С модальным от AngularUI-Bootstrap.

Я заставил это работать с открытием содержимого из выбранного элемента, который я хочу отредактировать.

Как вы можете видеть в Plunker, я почти заработал. Единственное, что я не могу понять, это как я могу заставить {{ item }} быть {{ widgetOption }} ПОСЛЕ того, как я нажал кнопку сохранения.

http://embed.plnkr.co/TTNccRuToObZuSmwYlTG/preview


person TheBoef    schedule 06.03.2014    source источник


Ответы (1)


Мой подход состоял бы в том, чтобы сохранить ссылку на исходный объект в вашем модальном контроллере. Итак, предположим, что переданный объект является оригиналом, и его следует изменять только в том случае, если форма сохранена. Внося наименьшее количество изменений в ваш код, чтобы заставить его работать, я придумал этот плункер.

http://plnkr.co/edit/eSbEZZajsNfmVv3vmTdc?p=info

var modalInstance = $modal.open({
    templateUrl: 'modal.html',
    controller: ModalInstanceCtrl,
    resolve: {
        widgetOptionsLocal: function () {
            return widgetOptions;
        }
    }
});


var ModalInstanceCtrl = function ($scope, $modalInstance, widgetOptionsLocal) {
    var widgetOptionsOriginal = widgetOptionsLocal;
    $scope.widgetOptions = angular.copy(widgetOptionsLocal);

    $scope.ok = function () {
      widgetOptionsOriginal.content = $scope.widgetOptions.content;
       $modalInstance.close($scope.widgetOptions);
    };

    $scope.cancel = function () {
       $modalInstance.dismiss('cancel');
    };
};
person Craig Squire    schedule 06.03.2014
comment
Спасибо за очень полезный пример! У меня есть небольшой вопрос, прямо сейчас вы делаете (Делаете .content ) $scope.ok = function () { widgetOptionsOriginal.content = $scope.widgetOptions.content; $modalInstance.close($scope.widgetOptions); }; Итак, если я добавлю дополнительные параметры в модальное окно, мне нужно вручную добавить все параметры? Так как нижний код не работал $scope.ok = function () { widgetOptionsOriginal = $scope.widgetOptions; $modalInstance.close($scope.widgetOptions); }; - person TheBoef; 07.03.2014
comment
С тем, как это закодировано прямо сейчас, да. Вы должны сохранить ссылку на этот исходный объект, вы не можете заменить его, иначе вы потеряете связь со своим списком элементов. Две альтернативы без переписывания больших фрагментов кода: а) используйте angular.extend для применения свойств нового объекта к исходному б) вы изменяете свой код, чтобы передать весь список и индекс, затем вы можете заменить объект в список с новым. - person Craig Squire; 07.03.2014
comment
Ура пошел на angular.extend, не знал об этом! Спасибо за помощь! - person TheBoef; 07.03.2014