は私は角度指令detectFocus
を有する:角度指示の位置変化を検出する方法は?
app.directive("detectFocus", function ($focusTest, $location, $rootScope) {
return {
restrict: "A",
scope: {
onFocus: '&onFocus',
onBlur: '&onBlur',
},
link: function (scope, elem) {
$rootScope.$on('$locationChangeSuccess', function (event, newUrl, oldUrl) {
return;
});
elem.on("focus", function() { console.log("focus");
scope.onFocus();
$focusTest.setFocusOnBlur(true);
});
elem.on("blur", function() { console.log("blur");
scope.onBlur();
if($focusTest.getFocusOnBlur())
elem[0].focus();
});
}
}
})。
このディレクティブは、2つのイベントのフォーカスとブラーをチェックします。したがって、このディレクティブからロケーションの変更を確認する方法はありません。ウォッチ変数を追加$location.path()
myModule.directive('highlighttab', ['$location', function(location) {
return {
restrict: 'C',
link: function($scope, $element, $attrs) {
var elementPath = $attrs.href.substring(1);
$scope.$location = location;
$scope.$watch('$location.path()', function(locationPath) {
(elementPath === locationPath) ? $element.addClass("current") : $element.removeClass("current");
});
}
};
}]);
に時計を追加
これを試すことができます:https://docs.angularjs.org/api/ng/service/$location#$locationChangeSuccess – Aer0
どのルータを使用していますか?彼らはrouteChangeイベントを持っています – charlietfl
ui-router/.............. – lakshay