我的應用程序中有一個標題,它使用一個指令來顯示/隱藏鏈接,具體取決於用戶權限,該指令使用一個服務,該服務返回帶有布爾結果的已解析承諾。問題是標題導航鏈接沒有正確顯示/隱藏(它顯示了以前的用戶可訪問的鏈接,所以我假設該服務沒有被調用),當我用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