2015-04-07 47 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-model。所以它必須是frmCtrl.login.username,在你的控制器內部,它必須是'this.login.username' – mohamedrias

+0

正如我所提到的,我想訪問該控制器方法中的$ scope變量。可能嗎 ? –

回答

1

您正在使用 「controllerAs」 語法,所以沒有$scope可用。在視圖中,您可以通過frmCtrl.login.username或控制器訪問它,您可以嘗試this.login.username

您可以瞭解更多有關在這裏:http://www.johnpapa.net/angularjss-controller-as-and-the-vm-variable/

+0

我經歷了這篇文章,但我需要更新$ scope.xyz而不是ng-model的值。可能嗎? –

+0

當使用constrollerAs語法時,沒有$ scope值...您可以將任何屬性分配給'this'並在任何需要的地方使用它。 – Kamil

0

您使用ctrl as語法,因此你ng-model顯示如下:

ng-model="frmCtrl.login.password" 

和功能應更改爲:

this.login = function(){ 
    console.log(this.login.username); 
} 
相關問題