我的应用程序中有一个标题,它使用一个指令来显示/隐藏链接,具体取决于用户权限,该指令使用一个服务,该服务返回带有布尔结果的已解析承诺。问题是标题导航链接没有正确显示/隐藏(它显示了以前的用户可访问的链接,所以我假设该服务没有被调用),当我用chrome控制台调试时,我期望显示一些日志在服务或指令,但没有什么,我看到日志的唯一方法是通过重新加载页面。当页面变化时,AngularJs指令没有被正确调用
指令:
.directive('hasAccess', ['PermissionsService', function(PermissionsService) {
return {
restrict: 'A',
scope: {
requiredAccess: "@",
requiredAccessFunc: '@'
},
link: function(scope, element, attrs) {
PermissionsService[scope.requiredAccessFunc](scope.requiredAccess, scope.locationId).then(function(bool) {
console.log("hasAccess");
if (!bool) {
element.addClass('hidden');
}
}, function(error) {
element.addClass('hidden');
});
}
};
}])
服务:
smps.checkSettingsAccess = function(settingName) {
console.log("checkSettingsAccess");
var deferred = $q.defer();
UserFactory.get().$promise.then (function(response) {
deferred.resolve(response[settingName]);
}, function() {
deferred.reject(response);
});
return deferred.promise;
}
部首指令:
.directive('header', function() {
return {
restrict: 'A',
replace: true,
templateUrl: "directives/header.html",
controller: ['$scope', '$filter', function ($scope, $filter) {
}]
}
})
部首HTML:
<li><a has-access required-access="company_access" required-access-func="checkSettingsAccess" ng-href="#/company_info">Company</a></li>
<li><a has-access required-access="locations_access" required-access-func="checkSettingsAccess" ng-href="#/locations">Locations</a></li>
<li><a has-access required-access="staff_members_access" required-access-func="checkSettingsAccess" ng-href="#/staff_members">Staff</a></li>
<li><a has-access required-access="customers_access" required-access-func="checkSettingsAccess" ng-href="#/customers">Customers</a></li>
<li><a has-access required-access="online_scheduling_access" required-access-func="checkSettingsAccess">Online Scheduling</a></li>
这些变量是服务使用的字符串,requiredAccessFunc是服务函数,requiredAccess是函数的参数。我认为问题仍然存在于页面更改时不会调用的指令上。如何在不更改我有两个范围变量的情况下更改它? – user1262904
所以我认为你可以使用$ render。这里https://docs.angularjs.org/api/ng/type/ngModel.NgModelController – Errorpro
当我移动标题(html)的内容并将其放在一个视图上时,它只是起作用,而我甚至没有重新加载页面,所以我认为问题也可能与呈现标题html的标题指令相关,请记住标题是通过dom属性调用指令的标题。 – user1262904