我想从page属性或类似属性中获取一个简单的值,但我正在寻找一种优雅的方法。我想将此简单字符串存储在控制器和服务要使用的通用位置。我试着做一个简单的属性:
的HTML:
<div ng-app="app" site-section="home"> ... </div>
js:
...
.directive('siteSection', ['$rootScope', function($rootScope) {
return {
link: function(scope, element, attrs) {
$rootScope.siteSection = attrs.siteSection;
}
}
}]);
在那个链接函数中,我可以将字符串保存到一个简单的服务中(或者值提供者更适合这种事情),但是该链接函数是在控制器函数之后调用的,所以当控制器初始化我的值时就不存在了。
那么,做这种事情的一种优雅方法是什么?我宁愿不使用ng-init,因为它们可能会变得凌乱。
最佳答案
您可以使用$timeout
服务来像这样等待角度:
link: function(scope, element, attrs) {
$timeout(function() {
$rootScope.siteSection = attrs.siteSection;
}, 0);
}
或使用
scope.$apply
link: function(scope, element, attrs) {
scope.$apply(function() {
$rootScope.siteSection = attrs.siteSection;
});
}
我也不认为您需要注入
$rootScope
,因为您可以使用scope.$root
访问它