AngularJS $范围无法在模板中访问

时间:2015-05-05 07:41:14

标签: javascript angularjs templates scope directive

由于标题摘要很好,我有一个模板,似乎无法访问我的$ scope。写一些更多信息。该模板将呈现为来自另一个模板的指令,如下所示:

<site-overview class="site-overview float_left" ng-repeat="site in currentEngine.data.sites" site='site' provider='currentEngine' style="background-color: {{currentEngine.data.skin.skin_color_2}}">
  </site-overview>

这些网站概述&#39;模板是可见的,但是当我尝试访问我添加到模板中的作用域的变量site时,即使我记录变量,我在控制台中获取数据,就像这样:

    (function(){
  'use strict';
  var singleSiteOverview = angular.module('stormforsStats.siteoverview',[]);

  singleSiteOverview.directive("siteOverview", [function(){
    return {
      restrict: "E",
      scope: {
        site:'=',
        provider: '='
      },
      templateUrl: "parts/pages/home/site-overview/site_overview.html",
      controller: 'siteOverviewCtrl',
      controllerAs: 'site'
    };
  }]);

  singleSiteOverview.controller('siteOverviewCtrl', ['$rootScope', '$scope', '$log', '$element', 'SERVER_DATA',
  function($rootScope, $scope, $log, $element, SERVER_DATA){
    $log.log($scope.site);
  }]);
})();

所以这个日志工作得很好,但在模板中我无法访问$ root:

    <a href="http://{{site.host_name}}" target="_blank" alt="site not available">
  <h4 class="skin_main_color">{{site.site_name}}</h4>
</a>

为了您的信息,我没有在此处包含所有代码,只包含与问题相关的代码(据我所知)。

这不起作用。

1 个答案:

答案 0 :(得分:0)

正如其中一条评论建议的那样,因为你使用的是“控制器as”,你的隔离范围变量是绑定到范围,而不是绑定到你的控制器,我猜这就是为什么你不能从你的控制器访问它模板。

这是一个与github问题类似的问题:https://github.com/angular/angular.js/issues/7635