我想从页面属性或类似的东西中获取一个简单的值,但我正在寻找一种优雅的方法来做到这一点。我想将这个简单的字符串存储在 Controller 和服务常用的地方。我尝试制作一个简单的属性:
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;
}
}
}]);
在该链接函数中,我可以将字符串保存到一个简单的服务(或者值提供程序对于此类事情更容易接受),但该链接函数是在 Controller 函数之后调用的,因此当 Controller 初始化我的值时不在那里。
那么做这样的事情有什么优雅的方法呢?我不想使用 ng-init,因为它们会变得困惑。
最佳答案
您可以使用 $timeout
服务来等待 Angular,如下所示:
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;
});
}
我也不认为您需要注入(inject) $rootScope
因为您可以使用 scope.$root
访问它
关于javascript - 从属性中获取一个值并将其提供给 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23817208/