javascript - 从属性中获取一个值并将其提供给 Controller ?

标签 javascript angularjs

我想从页面属性或类似的东西中获取一个简单的值,但我正在寻找一种优雅的方法来做到这一点。我想将这个简单的字符串存储在 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/

相关文章:

javascript - 在 JavaScript 中,将 NodeList 转换为数组的最佳方法是什么?

javascript - 无法使用 Firebase Auth 创建用户

javascript - 选择器更改事件在 Titanium 中首次未触发

javascript - angularjs 中的密码检查指令

javascript - 如何使用angularjs将数据传递到kendo窗口

javascript - AngularJS - 在每次下拉选择时触发 ng-change

javascript - 如何在 Angular 2 组件函数中使用 Angular 1 指令变量

javascript - 使用后退按钮时 jQueryMobile 丢失固定导航栏

javascript - 单击后更新 HTML 内容

javascript - Angular 将特定数据检索到 $scope 变量中不起作用