Angular Область внутри script

Можем ли мы использовать переменные angular, определенные в области внутри тега script, как показано ниже.

КОД HTML:

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

JS CODE:

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

Я просто получаю '$ scope не определен'. Может кто-нибудь помочь мне с тем, что я делаю неправильно здесь?

Ответ 1

Нет, вы не можете. $scope определяется только внутри Angular, то есть внутри вашей AngularCtrl -функции. Есть способы получить доступ к областям angular извне, но это обычно неправильная практика и знак, что вы не используете angular правильно.

Более угловатый способ делать то, что вы пытаетесь сделать, чтобы предупредить часть логики контроллера:

function AngularCtrl($scope) {

    $scope.user_name = 'John';

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

Затем вы можете использовать множество angular -techniques (Demo Here), чтобы вызвать эту функцию sayHi(). Некоторые примеры:

В ответ на щелчок

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

Автоматически один раз, когда данный элемент создается/инициализируется

<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();
}

Надеемся, что эти примеры вдохновляют, но то, что вы действительно должны делать, зависит от того, что вы действительно пытаетесь выполнить.