我正在开发AngularJS应用程序,我需要在创建项目时显示常用弹出窗口。对于所有应用程序,弹出窗口都是相同的,但每个调用控制器的保存和关闭方法的实现都会有所不同。
下面是常见的html页面代码:
saveItem.html
<div class="modal-header">
<i class="fa fa-times-circle" data-dismiss="modal" aria-hidden="true" ng-click="vm.closeItem()" style="color: #061530;font-size: 25px;float: right;" role="button" tabindex="0"></i>
</div>
<div class="modal-footer">
<button class="btn btn-primary" type="button" class="close" data-dismiss="modal" aria-hidden="true"
ng-click="vm.createItem()">Create another item
</button></div>
我使用ngDialog打开常用页面。下面的代码用于打开html页面:
FirstController 和 SecondController :
ngDialog.open({
template: 'app/confirmation/saveItem.html',
scope: $scope,
showClose: false
});
我想要什么?
我想在FirstController和SecondController中实现createItem()
和closeItem()
方法的不同实现。
但是当我在 -
中实现这两种方法时FirstController:
function closeItem() {
ngDialog.close();
}
function createdItem() {
//implemtation on FirstController
}
在 SecondController
中function closeItem() {
ngDialog.close();
}
function createdItem() {
//implemtation on SecondController
}
但它只在FirstController中工作。如何在两个控制器中编写不同的实现?
还有什么办法可以用ngDialog来保存以前的状态吗?
答案 0 :(得分:1)
在ngDialog
的文档中,您可以指定要用于对话框的控制器:
如有必要,将用于对话框窗口的控制器。该 控制器可以通过名称或直接引用来指定 内联。
ngDialog.open({
template: 'externalTemplate.html',
controller: 'SomeController' });
一种方法是为每种情况加载不同的控制器:
function openFirstDialog() {
ngDialog.open({
template: 'app/confirmation/saveItem.html',
scope: $scope,
showClose: false,
controller: 'FirstController'
});
}
function openSecondDialog() {
ngDialog.open({
template: 'app/confirmation/saveItem.html',
scope: $scope,
showClose: false,
controller: 'SecondController'
});
}
另一种解决方案是使用$scope
变量来决定操作:
function openFirstDialog() {
$scope.firstController = true;
ngDialog.open({
template: 'app/confirmation/saveItem.html',
scope: $scope,
showClose: false
});
}
function openSecondDialog() {
$scope.firstController = false;
ngDialog.open({
template: 'app/confirmation/saveItem.html',
scope: $scope,
showClose: false
});
}
然后检查对话框控制器中的$scope
变量:
function closeItem() {
ngDialog.close();
}
function createdItem() {
if($scope.firstController) {
//implemtation on FirstController, go to page 1
}
else {
//implemtation on SecondController, go to page 2
}
}
答案 1 :(得分:1)
将方法添加到您为对话框提供的范围:
new Handler().postDelayed(new Runnable(){
@Override
public void run(){
statusDialog.dismiss();
sendMailActivity.startActivity(new Intent(sendMailActivity, ...));
}
}, 3000);