无法从范围获取参数
Can't get parameter from scope
您好,我刚刚使用 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 范围内未定义。现在我真的很困惑。谁能帮帮我?
您似乎没有在 LoginCtrl.
中定义 $scope.loginparam
请在您的LoginCtrl
中添加以下代码
$scope.loginparam = {
email: '',
password: ''
}
您好,我刚刚使用 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 范围内未定义。现在我真的很困惑。谁能帮帮我?
您似乎没有在 LoginCtrl.
中定义$scope.loginparam
请在您的LoginCtrl
中添加以下代码$scope.loginparam = {
email: '',
password: ''
}