UI Bootstrap 指令内模态
UI Bootstrap Modal within Directive
我正在使用 Angular 1.4.1 和 UI Bootstrap 0.13.
我有一个要从中打开模式的指令。模态打开很好,但按钮似乎没有绑定到它们的处理程序——它们什么也没做。我在另一个项目中使用过相同的代码,但不是在指令中。
我的指令:
(function () {
var app = angular.module('myApp');
app.directive('someDirective', function () {
return {
restrict: 'E',
templateUrl: 'SomeDirective.html',
scope: {
list1: '=list1',
list2: '=list2',
save: '&'
},
controller: ['$scope','$modal','myService', function ($scope,$modal,myService) {
$scope.openModal = function () {
var modalInstance = $modal.open({
templateUrl: 'ModalTemplate.html',
controller: 'modalController',
backdrop: 'static',
size: 'sm',
resolve: {
saveData: function () {
//do save action
}
}
});
modalInstance.result.then(
function (itemToSave) {
//save item
},
function () {
//Cancel
}
);
};
}]
}
});
}());
模态控制器:
(function() {
var app = angular.module('myApp');
app.controller('modalController', [
'$scope', '$modalInstance', 'saveData',
function($scope, $modalInstance, saveData) {
$scope.saveData = saveData;
$scope.save = function() {
$modalInstance.close($scope.saveData);
};
$scope.cancel = function() {
$modalInstance.dismiss('cancel');
};
}
]);
}());
模态内容模板:
<div class="modal-header bg-info">
<h3 class="modal-title">Add New Record</h3>
</div>
<div class="modal-body">
<form class="form-horizontal" role="form"></form>
</div>
<div class="modal-footer bg-info">
<button class="btn btn-primary" ng-click="save()">Save</button>
<button class="btn btn-warning" ng-click="cancel()">Cancel</button>
</div>
我的想法是范围有问题,但我无法找到它。我在 modalController 上设置了断点。 app.controller() 调用在应用程序加载时发生,我已经看到了。但是 save() 和 cancel() 中的断点永远不会被击中。
谁能帮我弄清楚为什么模态框的按钮不起作用?
结果证明这是一个愚蠢的错误。在某些时候,我显然用我用于模态的控制器的相同名称覆盖了我项目中其他控制器之一的名称。另一个控制器没有 save() 或 cancel() 方法,所以什么也没有发生。一旦我修复了我的错误并且所有控制器再次有了它们的专有名称,它又开始工作了。
我正在使用 Angular 1.4.1 和 UI Bootstrap 0.13.
我有一个要从中打开模式的指令。模态打开很好,但按钮似乎没有绑定到它们的处理程序——它们什么也没做。我在另一个项目中使用过相同的代码,但不是在指令中。
我的指令:
(function () {
var app = angular.module('myApp');
app.directive('someDirective', function () {
return {
restrict: 'E',
templateUrl: 'SomeDirective.html',
scope: {
list1: '=list1',
list2: '=list2',
save: '&'
},
controller: ['$scope','$modal','myService', function ($scope,$modal,myService) {
$scope.openModal = function () {
var modalInstance = $modal.open({
templateUrl: 'ModalTemplate.html',
controller: 'modalController',
backdrop: 'static',
size: 'sm',
resolve: {
saveData: function () {
//do save action
}
}
});
modalInstance.result.then(
function (itemToSave) {
//save item
},
function () {
//Cancel
}
);
};
}]
}
});
}());
模态控制器:
(function() {
var app = angular.module('myApp');
app.controller('modalController', [
'$scope', '$modalInstance', 'saveData',
function($scope, $modalInstance, saveData) {
$scope.saveData = saveData;
$scope.save = function() {
$modalInstance.close($scope.saveData);
};
$scope.cancel = function() {
$modalInstance.dismiss('cancel');
};
}
]);
}());
模态内容模板:
<div class="modal-header bg-info">
<h3 class="modal-title">Add New Record</h3>
</div>
<div class="modal-body">
<form class="form-horizontal" role="form"></form>
</div>
<div class="modal-footer bg-info">
<button class="btn btn-primary" ng-click="save()">Save</button>
<button class="btn btn-warning" ng-click="cancel()">Cancel</button>
</div>
我的想法是范围有问题,但我无法找到它。我在 modalController 上设置了断点。 app.controller() 调用在应用程序加载时发生,我已经看到了。但是 save() 和 cancel() 中的断点永远不会被击中。
谁能帮我弄清楚为什么模态框的按钮不起作用?
结果证明这是一个愚蠢的错误。在某些时候,我显然用我用于模态的控制器的相同名称覆盖了我项目中其他控制器之一的名称。另一个控制器没有 save() 或 cancel() 方法,所以什么也没有发生。一旦我修复了我的错误并且所有控制器再次有了它们的专有名称,它又开始工作了。