簡體   English   中英

如何從模板腳本訪問AngularJS變量

[英]How to access AngularJS variable from template script

我的控制器:

$scope.totals = totals;

我的模板(按照預期的html注入工作):

{{totals}}

但我需要的是在模板中的腳本中訪問變量totals ,如下所示:

<script>
  var totals = ????;
  // do stuff with totals
</script>

我已經嘗試了$scope.totals$totals{{totals}}等,但沒有用。 我很感激任何見解,謝謝!

編輯:

以下是我的控制器和模板的jsfiddle。 在模板內部我想插入一個使用$scope.totals變量的腳本。

http://jsfiddle.net/38CrC/

首先,AngularJS背后的想法是喜歡這樣的情況。

就AngularJS而言,您可能最好重新考慮您的應用程序並使用指令來封裝您當前在腳本標記中編寫的代碼。

但是,話雖如此,有一種方法可以訪問這樣的范圍:

var $element = $('#elementId');

var scope = angular.element($element).scope();

您可以閱讀文檔以獲取更多詳細信息。

但如上所述,在大多數情況下,這不是推薦的做法。

希望有所幫助!


OP發布后更新jsFiddle:

為了您的方便,我在http://jsfiddle.net/jvandemo/hYnBa/1/創建了一個工作的jsFiddle

由於您的示例具有帶ng-controller屬性的簡單div ,因此您可以像下面這樣訪問范圍:

<script>
    $(document).ready(function(){
        var $element = $('div[ng-controller="AdminEventsCtrl"]');
        var scope = angular.element($element).scope();
        console.dir(scope);
    });
</script>

這是發生的事情:

  • 你選擇元素(在這種情況下使用jQuery)
  • 將元素包裝為AngularJS元素(在元素上公開額外的方法)
  • 您可以在元素上調用scope()方法
  • 然后,您可以訪問范圍屬性,例如scope.totals

希望有所幫助!

OP答案:

我最終不得不使用指令來找到我想要的值。 在設置我想要使用的值的控制器中,我添加了一個指令,使它看起來像這樣:

'use strict';

angular.module('AdminApp')
  .controller('AdminEventsCtrl', function ($scope, collection) {
    $scope.totals = collection;
  }).directive('foo', function(){
    return {
        restrict: 'A',
        link: function(scope, elem, attrs){
            //Use scope.totals here
        }
    }
});

在我的模板中,我有了聲明:

<div foo></div>

這使我有能力用變量總數做我需要的東西。

特別感謝@jvandemo幫我解決這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM