我使用的UI,路由器和嘗試將指令內訪問我的web應用程序的當前狀態,使用以下:訪問指令中的當前狀態名稱?
footer.directive.js
(function() {
'use strict';
angular
.module('app')
.directive('myFooter', myFooter);
myFooter.$inject = ['$cookies', 'userFactory', '$state', '$log', '$rootScope'];
function myFooter($cookies, userFactory, $state, $log, $rootScope) {
var directive = {
restrict: 'E',
templateUrl: 'app/components/footer/footer.html',
controller: FooterController,
controllerAs: 'vm',
bindToController: true
};
return directive;
function FooterController($state) {
var vm = this;
vm.currentState = $state;
}
}
})();
footer.html
<div class="footer">
<p>{{ vm.currentState.current.name }}</p>
</div>
當我運行$log.log($state)
它在我的控制檯發佈一個對象,其中有一個current
對象的name
屬性等於我需要的狀態名稱,但是當我嘗試引用$ state.current.name時,無論是在我的視圖還是將它記錄到控制檯,它都顯示爲空字符串。
我對Angular有點新,所以如果有人能向我解釋這裏發生了什麼,或者至少如何解決這個問題,以便我能夠正確顯示我想要的東西,這將是一個巨大的幫助。謝謝!
編輯:我看了張貼這一個先於其他兩個問題是:
This one這似乎與基於狀態的名稱更改類名來處理更多,this one,這並不完全解決我的問題或者(和看起來並不像它可能是這樣做的正確方法。)
對不起,命名錯誤是由於它削減到一個MVP,我剛剛修復它。另外,是不是'vm.currentState'也是該對象的引用?所以當我在部分上執行vm.currentState.current.name時,爲什麼沒有正確顯示呢? – turner
我想一個更重要的問題是,爲什麼這個工作正常,在我的控制器中沒有問題,但是這個指令控制器不能像這樣工作? – turner