10

以下のように、script タグ内のスコープで定義された角度変数を使用できますか。

HTML コード:

<div ng-controller="AngularCtrl">
 <script>
  alert($scope.user_name);
 </script>
</div>

JS コード:

function AngularCtrl($scope){
 $scope.user_name = 'John';
}

「$scope が定義されていません」というメッセージが表示されます。誰かが私がここで間違っていることを手伝ってくれますか?

4

1 に答える 1

15

いいえ、できません。Angular内、つまり関数$scopeでのみ定義されます。外部からAngularスコープにアクセスする方法はいくつかありますが、これは通常は悪い習慣であり、Angularを正しく使用していないことを示しています。AngularCtrl

試行していることを実行するためのより角度のある方法は、アラートをコントローラーロジックの一部にすることです。

function AngularCtrl($scope) {

    $scope.user_name = 'John';

    $scope.sayHi = function(){
        alert('Hi ' + $scope.user_name);
    }
}

次に、さまざまな角度手法(デモはこちら)を使用して、その関数を呼び出すことができsayHi()ます。いくつかの例:

クリックに応じて

<div ng-click="sayHi()">Demo clickable - Please click me</div>

特定の要素が作成/初期化されると自動的に1回

<div ng-init="sayHi()">Demo ng-init</div>

初期化時にコントローラーから直接

function AngularCtrl($scope) {

    $scope.user_name = 'John';

    $scope.sayHi = function(){
        alert('Hi ' + $scope.user_name);
    }

    // Call it
    $scope.sayHi();
}

これらの例が刺激的であることを願っていますが、実際に何をすべきかは、実際に達成しようとしていることによって異なります。

于 2012-12-12T10:07:47.690 に答える