我想使用ionicModal
仅为用户提供一次指令(仅在用户第一次进入页面时)。
但是对于我当前的代码,每次用户进入页面时都会出现。我用谷歌搜索,但没有看到相关的结果。
这是工作代码(每次用户进入页面时都会出现)
.controller('formCtrl', function($scope,$ionicModal, getUrl,$state) {
$ionicModal.fromTemplateUrl('templates/instruction.html', {
scope: $scope,
animation: 'slide-in-up'
}).then(function(modal) {
$scope.modal = modal;
});
$scope.openModal = function(){
$scope.modal.show();
}
$scope.closeModal = function(){
$scope.modal.hide();
}
$scope.$on( "$ionicView.enter", function( scopes, states ) {
$scope.openModal();
});
})
尝试通过置入条件(不起作用)来修改它
.controller('formCtrl', function($scope,$ionicModal, getUrl,$state, getInstructions) {
$scope.$on("$ionicView.enter", function( scopes, states ) {
if(getInstructions.getInstruction() == true){
$ionicModal.fromTemplateUrl('templates/instruction.html', {
scope: $scope,
animation: 'slide-in-up',
}).then(function(modal) {
$scope.modal = modal;
});
$scope.openModal = function(){
$scope.modal.show();
}
getInstructions.setInstruction(); //set as false
$scope.closeModal = function() {
$scope.modal.hide();
};
$scope.$on('$ionicView.afterEnter', function(scopes, states) {
console.log("after enter");
$scope.openModal();
});
}
});
})
提前谢谢!
答案 0 :(得分:0)
.controller('formCtrl', function($scope,$ionicModal, getUrl,$state) {
$scope.modalViewed = false;
$ionicModal.fromTemplateUrl('templates/instruction.html', {
scope: $scope,
animation: 'slide-in-up'
}).then(function(modal) {
$scope.modal = modal;
});
$scope.openModal = function(){
$scope.modal.show();
}
$scope.closeModal = function(){
$scope.modal.hide();
}
$scope.$on( "$ionicView.enter", function( scopes, states ) {
if(!$scope.modalViewed){
$scope.modalViewed = true;
$scope.openModal();
}
});
})
我在范围$scope.modalViewed
中添加了一个检查变量。并在打开模态之前检查条件。
如果删除离子视图的默认缓存,则此条件不起作用。如果没有缓存,控制器将再次运行,此代码将无法运行。在这种情况下,您必须将检查变量$scope.modalViewed
存储到会话存储中,并删除控制器中的初始化。
答案 1 :(得分:0)
试试这个
{{1}}