无法从范围获取参数

时间:2015-08-05 20:36:26

标签: angularjs scope ionic 2-way-object-databinding

您好我刚刚使用ion-nav-view标签创建了一个带Ionic的登录页面。这是在我的index.html中我有这个标签,它与.config一起使我能够根据我的规格更改我的模板。

这是index.html的主体:

<body ng-app="starter">

<ion-nav-bar class="bar-positive">
  <ion-nav-back-button>
  </ion-nav-back-button>
</ion-nav-bar>
<ion-nav-view></ion-nav-view>
</body>

这是app.js

的一部分
 .config(function($stateProvider, $urlRouterProvider) {
  .state('login', {
  url: '/login',
  views: {
    '': {
      templateUrl: 'templates/login.html',
      controller: 'LoginCtrl'
    }
  }
})

这是login.html:

<ion-view view-title="" name="login-view">
<ion-nav-bar ></ion-nav-bar>
      <ion-content class="padding top-space">
      <div class="item item-image padding borders">
          <img ng-src="img/welcome.png">
      </div>
      <br/>
      <br/>

      <div class="list">
         <label id="rounded" class="item item-input">
              <span class="input-label"><span class="ion-email"></span> Email</span>
              <input type="email" placeholder="example@go.cm" class="button-blanche" ng-model= "loginparam.email">
         </label>
      </div>
      <div class="list">
         <label id="rounded" class="item item-input">
              <span class="input-label"><span class="ion-unlocked"></span> Password</span>
              <input type="password" placeholder = "password"class="button-banche" ng-model= "loginparam.password">
         </label>
      </div>
      <button class="button button-block button-verte" ng-click="login()">Login to GoJ</button>
      <div class="padding">
        <p>Not in GoJ? <a class="green-link" ng-click="signin()">Create an Account</a></p>
        <p><a  class="green-link" href="">Forgot Password?</a></p>
      </div>
      {{loginparam}}
  </ion-content>
</ion-view>

根据我的理解,当启动应用程序时,index.html会重定向到login.html页面,并且与此视图关联的控制器是登录控制器。那么如果我使用此模板上的ng-model指令绑定视图上的数据,它将绑定到当前作用域,该作用域应该是我的LoginCtrl但仍然没有效果。

    .controller('LoginCtrl', function($scope, $state, $rootScope, $ionicModal) {
    console.log("sCope  " + $scope.loginparam);//undefined
    console.log("root" + $rootScope.loginparam);//undefined
    var param = {};
    $scope.login =function(){
console.log("Checking rootscope " +$rootScope.loginparam);//undefined
console.log("Checking scope " +$scope.loginparam);//undefined
//call the login service with the login parameters from the login template

    $state.go("tab.dash");
  };

我的console.log($scope.loginparam)在LoginCtrl范围内未定义。现在我真的很困惑。任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

您似乎未在 LoginCtrl 中定义$scope.loginparam

请在 LoginCtrl

中添加以下代码
$scope.loginparam = {
    email: '',
    password: ''
}