angularjs如何访问控制器行为中的范围

时间:2015-04-07 08:35:16

标签: angularjs angularjs-scope

我在控制器的行为中访问$ scope时遇到了问题。代码如下所示。

<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

2 个答案:

答案 0 :(得分:1)

您正在使用&#34; controllerAs&#34;语法,因此没有$scope可用。在视图中,您可以通过frmCtrl.login.username或在控制器中访问this.login.username

您可以在此处了解详情:http://www.johnpapa.net/angularjss-controller-as-and-the-vm-variable/

答案 1 :(得分:0)

您使用的是ctrl as语法,因此您的ng-model展示如下:

ng-model="frmCtrl.login.password"

功能应改为:

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