Я следующий кодВозникли проблемы для передачи данных в модальной в AngularJS
$scope.currentTask = undefined;
$scope.openModal = function (task, size, parentSelector) {
var parentElem = parentSelector ?
angular.element($document[0].querySelector('.modal-demo ' + parentSelector)) : undefined;
var modalInstance = $uibModal.open({
animation: true,
ariaLabelledBy: 'modal-title',
ariaDescribedBy: 'modal-body',
templateUrl: 'myModalContent.html',
controller: 'homeController',
controllerAs: '$ctrl',
scope: $scope,
size: size,
appendTo: parentElem,
resolve: {
items: function() {
return $scope.items;
}
}
});
$rootScope.currentModal = modalInstance;
$rootScope.currentModal.result.then(function() {
}, function() {
$log.info('Modal dismissed at: ' + new Date());
});
}
$scope.setTask = function(task) {
$scope.currentTask = task;
}
$scope.log = function (currentTask) {
console.log($scope.currentTask);
}
<div class="row" ng-init="processPages()">
\t <div class="panel panel-default col-xs-3" style="margin: 20px" ng-repeat = "list in pages[currentPage]">
\t \t <div class="panel panel-default">
\t \t \t <div class="panel-heading">
\t \t \t \t <h6 style = "float: right">({{list.tasks.length}})</h6>
\t \t \t \t <div class="panel-title">
\t \t \t \t \t <h4>{{list.name}}</h4>
\t \t \t \t </div>
\t \t \t </div>
\t \t </div>
\t \t <div class="panel-body">
\t \t \t <table class="table table-striped table-hover" ng-init = "tasks = list.tasks">
\t \t \t \t <tr ng-repeat="task in tasks">
\t \t \t \t \t <td ng-click="setTask(task); openModal(task);> \t \t
\t \t \t \t \t \t <h5>{{task.name}}</h5>
\t \t \t \t \t </td>
\t \t \t \t </tr>
\t \t \t </table>
\t \t </div>
\t </div> \t
</div>
<script type="text/ng-template" id="myModalContent.html">
\t <div ng-init="editEnabled = false">
<div class="modal-header" ng-init = "log(currentTask)">
<h3 class="modal-title" id="modal-title" ng-show = "!editEnabled">Not editing</h3>
<h3 class="modal-title" id="modal-title" ng-show = "editEnabled">Editing</h3>
</div>
<div class="modal-body" id="modal-body">
\t <div ng-show="!editEnabled">
\t </div>
\t <div ng-show="editEnabled">
\t \t \t \t
\t </div>
</div>
<div class="modal-footer">
\t <button style = "float: left" class="btn btn-primary" type="button" ng-show = "!editEnabled" ng-click="editEnabled = true">Editar</button>
<button class="btn btn-primary" type="button" ng-click="ok()">OK</button>
<button class="btn btn-warning" type="button" ng-click="cancel()">Cancel</button>
</div>
\t </div>
</script>
Вот как страница работает:
First we have a list of tasks and if we click on one task...
Мне нужна информация о задаче, которая будет передана модели, но каждый раз, когда я устанавливаю задачу в области $ scope как задачу в списке, даже если это происходит до того, как модель будет открыта, функция журнала печатает текущую. не определено. Я попытался изменить определение currentTask в начале, чтобы быть чем-то конкретным, но тогда происходит то, что функция журнала печатает то, что было определено в начале, а не после внесения изменений.
Ваша проблема в том, что вы назначили своего контроллера модальному. Поэтому модальный имеет свой собственный экземпляр homecontroller, созданный из-за этого, информация, которую вы пытаетесь передать, переопределяется самими модалами. Удалите контроллер, и если вам нужен контроллер, сделайте его явно для модального. По крайней мере, я думаю, в чем проблема. Если это не так, плохо воссоздайте свой код в проекте и выполните еще несколько тестов. Дай мне знать :) – matt
Эй, парень, спасибо за ответ. Я попытался удалить декларацию контроллера контроллера, но stil не работал :(Затем я попытался удалить объявление области видимости внутри модели, но потом я больше ничего не смог извлечь из своей области внутри. –