2015-04-07 74 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); 
} 
相关问题