AngularJS 在模板中无法访问 $scope
AngularJS $scope not accessible in template
正如标题所总结的那样,我有一个模板,似乎无法访问我的 $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>
这些 'site-overview' 模板是可见的,但是当我尝试访问我添加到模板范围的变量 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>
供您参考,我没有在此处包含所有代码,仅包含与问题相关的代码(据我所知)。
这行不通。
正如其中一条评论所建议的那样,因为您正在使用 "controller as",您的隔离范围变量绑定到范围,而不是您的控制器,我猜这就是您无法访问的原因它来自您的模板。
这是一个与 github 上的问题类似的问题:https://github.com/angular/angular.js/issues/7635
正如标题所总结的那样,我有一个模板,似乎无法访问我的 $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>
这些 'site-overview' 模板是可见的,但是当我尝试访问我添加到模板范围的变量 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>
供您参考,我没有在此处包含所有代码,仅包含与问题相关的代码(据我所知)。
这行不通。
正如其中一条评论所建议的那样,因为您正在使用 "controller as",您的隔离范围变量绑定到范围,而不是您的控制器,我猜这就是您无法访问的原因它来自您的模板。
这是一个与 github 上的问题类似的问题:https://github.com/angular/angular.js/issues/7635