在指令中注意stateParams

时间:2016-06-09 16:03:43

标签: angularjs angularjs-directive angular-ui-router

我正在尝试在特定路线中的元素中应用CSS样式。为此,我创建了一个指令,当$ state.include包含位置时我添加了类,但由于路径不断变化,它需要监视$状态的变化,但它不起作用。这是我的代码:

angular
    .module('pharm')
    .directive('flApplyStyle',['$stateParams','$state',applyStyle]);

function applyStyle($stateParams,$state) {
    return {
        link: function(scope, element, attributes){
            console.log($state.current);
            scope.$watch($stateParams, function (newValue, oldValue) {
                if ($state.includes("app.calc.edit")) {
                    element.addClass('BackgroundEdit');
                }else{
                    element.addClass('none');
                }
            });
        }
    }
};

1 个答案:

答案 0 :(得分:0)

这应该可行。点按$stateChangeStart事件,然后检查$state的更改。如果该事件无效,请尝试$stateChangeSuccess

angular
    .module('pharm')
    .directive('flApplyStyle', ['$rootScope','$state', applyStyle]);

function applyStyle($rootScope, $state) {
    return {
        link: function(scope, element, attributes){
            $rootScope.$on('$stateChangeStart', function () {
                if ($state.includes("app.calc.edit")) {
                    element.addClass('BackgroundEdit');
                } else {
                    element.addClass('none');
                }
            });
        }
    }
}