Ben*_*Ben 7 modal-dialog angularjs ionic-framework
在具有Ionic的AngularJS中,我希望能够从不同的控制器调用一个模态,而不必复制与模态相关的代码.
以下是如何创建模态(缩写为http://learn.ionicframework.com/formulas/making-modals/).
HTML:
<div class="card" ng-controller='MainCtrl' ng-click="openModal()">
Click here to open the modal
</div>
Run Code Online (Sandbox Code Playgroud)
JS:
app.controller('MainCtrl', function($scope, $ionicModal)
{
$ionicModal.fromTemplateUrl('contact-modal.html', {
scope: $scope,
animation: 'slide-in-up'
}).then(function(modal) {
$scope.modal = modal
})
$scope.openModal = function() {
$scope.modal.show()
}
// functions for this modal
// ...
})
Run Code Online (Sandbox Code Playgroud)
现在这一切都很好,但是如果我想从不同的控制器打开具有相同功能的相同模态,我将不得不复制与之相关的所有代码.
我如何抽象这个以使我的模态可以从不同的控制器重用和调用?
理想情况下,我希望每个模态都有自己的"控制器"(或类似的概念),而不是必须将其所有代码放入控制器中,无论打开它的是什么.
这是指令的完美场景。
指令代码:
app.directive('myPopUp', ['$ionicModal', function($ionicModal) {
return {
restrict: 'E',
scope: {
externalScope : "="
}
replace: true,
templateUrl: 'path/to/your/template',
link: function($scope, $element, $attrs) {
$ionicModal.fromTemplateUrl('contact-modal.html', {
scope: $scope.externalScope,
animation: 'slide-in-up'
}).then(function(modal) {
$scope.modal = modal
});
$scope.externalScope.openModal = function() {
$scope.modal.show()
};
}
};
}]);
Run Code Online (Sandbox Code Playgroud)
和您的控制器:
app.controller('MainCtrl', ['$scope', function($scope) {
$scope.externalScope = {}
});
Run Code Online (Sandbox Code Playgroud)
每当您想将其包含在部分中时,只需添加:
<my-pop-up externalScope="externalScope"></my-pop-up>
Run Code Online (Sandbox Code Playgroud)
该指令将可以通过 externalScope 属性访问控制器,反之亦然。您可以$scope.externalScope.openModal()从控制器调用,它将触发您的指令模式打开。
希望这有帮助。
| 归档时间: |
|
| 查看次数: |
6406 次 |
| 最近记录: |