2015-04-07 2 views
0

У меня проблема при доступе к $ scope внутри поведения контроллера. код выглядит следующим образом.angularjs как получить доступ к области внутри контроллера.

<body id="main_body" ng-controller="FormController as frmCtrl"> 
<form id="form_991905" class="appnitro" name="loginForm" ng-submit="loginForm.$valid && frmCtrl.doLogin()" novalidate> 
    <div class="form_description"> 
     <h2>Login Form</h2>  
    </div> 
    <ul>     
     <li id="li_1" > 
      <label class="description" for="username">Username </label> 
      <div> 
       <input name="username" class="element text medium crequired email" type="email" ng-model="login.username" form-validator /> 
       <div class="errBx"></div> 
      </div> 
     </li>  
     <li id="li_2" > 
     <label class="description" for="password">Password </label> 
      <div> 
       <input name="password" class="element text medium crequired" type="text" ng-model="login.password" form-validator/> 
       <div class="errBx"></div> 
      </div> 
     </li>    
     <li class="buttons">    
      <input id="saveForm" class="button_text" type="submit" name="submit" value="Submit"/> 
     </li> 
    </ul> 
</form> 

я хочу, чтобы получить доступ к $ scope.login.username внутри метода

controller code..... 

this.login = function(){ 
    console.log($scope.login.username); 
} 

// controller code 
+0

Какая у вас проблема? – mohamedrias

+0

Также, когда вы используете controllerAs 'frmCtrl', вы должны префикс ng-модели этим. Таким образом, это должно быть frmCtrl.login.username, внутри вашего контроллера должно быть 'this.login.username' – mohamedrias

+0

, как я уже упоминал, я хочу получить доступ к переменной $ scope внутри этого метода контроллера. Является ли это возможным ? –

ответ

1

Вы используете "controllerAs" синтаксис, так что нет $scope доступны. В представлении вы можете получить к нему доступ через frmCtrl.login.username или в contoller вы можете попробовать this.login.username.

Вы можете узнать больше об этом здесь: http://www.johnpapa.net/angularjss-controller-as-and-the-vm-variable/

+0

Я просмотрел статью, но мне нужно обновить $ scope.xyz скорее значение ng-model. Является ли это возможным? –

+0

Нет значения $ scope при использовании синтаксиса constrollerAs ... Вы можете присвоить любое свойство 'this' и использовать его в любом месте. – Kamil

0

Вы используете ctrl as синтаксис, поэтому ваш ng-model шоу будет следующим:

ng-model="frmCtrl.login.password" 

И функция должна измениться на:

this.login = function(){ 
    console.log(this.login.username); 
} 
Смежные вопросы