我是Angular的新手。不知道我在這裏失去了什麼以及從哪裏開始尋找。如何使用服務啓動模態(指令)
我需要在我的應用程序中重複使用(Twitter Bootstrap)模式對話框。我看過Angular UI,但我想自己構建它們 - 也能夠理解它是如何工作的。
我:
筆者認爲:
<div cng-modal title="Create new user" submit="saveNewUser()">
<div ng-include=" 'templates/newUserForm.html' "></div>
</div>
我的指令:
UserManagerApp.directive('cngModal', function() {
return {
restrict: 'A',
replace: true,
transclude: true,
scope: {
title: '@title',
submit: '&'
},
templateUrl: 'templates/modal.html',
controller: function($scope, $element, $attrs, $location) {
$scope.submitHandler = function() {
$scope.submit();
};
},
link: function (scope, element, attrs) {
console.log(element);
}
};
});
我modal.html模板:
<div id="newUserModal" class="modal hide" data-backdrop="static" tabindex="-1">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h3>{{ title }}</h3>
</div>
<div class="modal-body" ng-transclude></div>
<div class="modal-footer">
<div class="btn-group">
<button type="button" class="btn btn-primary btn-action btn-submit" ng-click="submitHandler()"><i class="icon-ok"></i> Save</button>
<button type="button" class="btn btn-action btn-cancel" data-dismiss="modal"><i class="icon-remove"></i> Cancel</button>
</div>
</div>
最後(的一部分)我的控制器:
UserManagerApp.controller('UserManagerCtrl', ['$scope', 'ajaxService', '$route', function($scope, ajaxService, $route) {
$scope.showNewUserModal = function() {
$('#newUserModal').modal('show');
};
$scope.saveNewUser = function() {
console.log('saving user');
};
}]);
問題
現在我在我的模式打開,因爲我已經在modal.html並賦予它的ID「newUserModal」我控制器showNewUserModal()通過其ID觸發該模式。
我想要一個服務,我可以從我的控制器中調用,根據我的指令構造一個新的模態並打開它。無需分配任何ID。 ....這怎麼可能?
感謝您指點我正確的方向。
既然你談到了ui-bootstrap。我們在那裏有一個很好的$模態(如果你不想使用,不用),但要了解我們是如何做到的。 –