【发布时间】:2014-02-14 11:41:25
【问题描述】:
我是 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。我们有一个很好的 $modal(如果你不想要就不要使用),但要了解我们是如何做到的。
标签: javascript angularjs