0
我有一个角度的应用程序,基本上有一个指令,显示内容取决于用户的类型,以防您的帐户类型是免费的,你是一个向导模式给你一些促销信息购买,但如果您的accounType不是免费或专业的,它可以启动ng-click事件并显示您的授权可以看到的模式。ng-click事件与承诺
但有一个问题,即时通讯,我相信,因为我需要作出承诺,以获得当前accounType的用户,并提供正确的信息有一种类型的延迟,2模型是开火了。我认为是因为evt.stopProgation ...在一个承诺之内,而不是显示一个模式。
这里是我的代码: 指令:
angular.module('app')
.directive('premiumContent',
[
'$http', '$q','UserService','$uibModal','$rootScope','WizardService',
premium
]);
function premium($http, $q, UserService, $uibModal, $rootScope,WizardService) {
return {
restrict: 'A',
priority: -1,
link: function($scope, element, attrs, controller) {
element.on('click', function(evt){
var clean = attrs.ngClick.substring(0, attrs.ngClick.indexOf('('));
var controllerName = clean.substring(0, clean.indexOf('.'));
var clickTarget = clean.substring(clean.indexOf('.'),clean.length).replace('.','');
if(attrs.counter == "false"){
WizardService.isBlock = false;
}else{
WizardService.isBlock = true;
}
UserService.getAuthenticatedUser()
.then(function (response) {
response = response.data;
debugger;
var accountType = response.user.account_type_id;
var user = response.user;
var users = $scope.$eval(attrs.to);
//check if is passing more than one user (array/object)
if(typeof users === 'object'){
if(users.indexOf(accountType) !== -1){
//assign a user to hide
users = users[users.indexOf(accountType)];
}
}
if(users !== accountType) {
evt.preventDefault()
evt.stopImmediatePropagation();
$uibModal.open({
animation: true,
backdrop: 'static',
keyboard: false,
templateUrl: 'template/sidebar/wizard',
size: 'lg',
controller: 'WizardController',
controllerAs: 'wizardCtrl',
resolve: {
user: function() {
return user
},
modalName: function() {
return $scope[controllerName][clickTarget];
}
}
});
}
});
});
}
};
}
HTML:
<a premium-content to="[5]" counter="false" ng-click="sidebarCtrl.openProModal();">Senstive data</a>
我不太明白我在modalInstance.result中放置了什么,你能解释一下吗? –
您可以从模态中传回一个值(也许是accounType?),并在这里处理它,或者在模态关闭后您想要执行的任何代码。 – jbrown