0
我想要開始使用Angular(1),我有一個佈局,其中的nav需要根據登錄的用戶類型進行更改,當頁面加載時我發送向用戶對象發送對API的請求(我將與頁面上的其他控制器共享)。構建基於ajax響應的角度視圖
這是我的控制器,到目前爲止,
app.controller('DashboardController', function($scope, UserService, $rootScope){
$scope.loading = true;
if($scope.loading) {
$scope.doInitialisation
}
$scope.isSuper = function() {
if($scope.user.isSuper == 1) {
return true;
}
return false;
}
UserService.authenticatedUser()
.then(function(response){
$scope.loading = false;
$rootScope.user = response.message;
}, function(error) {
$scope.hasError = true;
$scope.errors = error.message;
});
});
在我的模板我做一些喜歡嘗試並展示基於用戶類型的UL,
<ul ng-if="isSuper()" ng-include="dashboard/nav/super.html"id="sidebar-menu" class="sf-js-enabled sf-arrows">
</ul><!-- #sidebar-menu -->
我碰到下面的錯誤,
無法讀取的未定義的屬性 'isSuper'
我認爲這是因爲isSuper()在我的ajax加載之前被解僱,有沒有辦法繞過我們?我可以在ajax成功回調模板中做我正在做的事情嗎?
完全有更好的方法嗎?
您使用路由
ng-include
指令,如果是的話,你可以將確保依賴性加載控制器代碼被執行之前,請參閱HTTP的路線上使用的resolve屬性? //odetocode.com/blogs/scott/archive/2014/05/20/using-resolve-in-angularjs-routes.aspx –將$ scope.user初始化爲新的空白JavaScript對象,另一種方法是將它留給AngularJS它會在ng-if指令的表達式更改(true或false)時檢查我的示例代碼片段來更新視圖。 –