Angularjs 从包含离子内容的不同离子视图访问变量
我刚开始使用Ionic,有一个HTML代码段,如下所示:Angularjs 从包含离子内容的不同离子视图访问变量,angularjs,ionic-framework,angularjs-scope,ionic-view,Angularjs,Ionic Framework,Angularjs Scope,Ionic View,我刚开始使用Ionic,有一个HTML代码段,如下所示: <!-- part of index.html --> <body data-ng-app="myapp" data-ng-cloak> <ion-nav-bar class="bar-positive"></ion-nav-bar> <ion-nav-view></ion-nav-view> </body> 因此,如果登录失败,我希望
<!-- part of index.html -->
<body data-ng-app="myapp" data-ng-cloak>
<ion-nav-bar class="bar-positive"></ion-nav-bar>
<ion-nav-view></ion-nav-view>
</body>
因此,如果登录失败,我希望在所需的输入元素中显示用户的邮件地址,以提供更好的可用性,这可以通过使用相同的模型变量来实现
但是,由于我在每个视图中都有一个ion content
元素,因此它们的范围与其他视图的范围是隔离的,如中所述
我试图通过在$parent.
前面加上数据ng模型
属性来获得访问权限,该属性应引用周围离子视图
标记的外部范围,该标记应可通过写入等方式访问
<!-- just last three lines of view following -->
</ion-content>
{{ user.mail }}
</ion-view>
{{user.mail}
在视图的末尾。然而,情况似乎并非如此
我很确定这个问题会导致范围外继承和DOM中范围元素的层次结构。不幸的是,我不明白这一点。首先,我认为不使用对象表示法进行双向绑定可能会有问题,但我应该已经解决了这个可能的问题
如何从包含离子内容元素且具有其自身范围的所有注入视图访问数据模型?链接$parent
元素,如$parent.$parent.
似乎不适用于一般方法,也不会产生如上所述的预期结果
<!-- partials/login_failed.html -->
<ion-view view-title="Login failed">
<ion-content>
<div class="list list-inset" data-ng-form="forms.login">
<label class="item item-input">
<input type="email" name="mail" data-ng-model="user.mail" placeholder="E-Mail-Adress" required>
</label>
<label class="item item-input">
<input type="password" name="password" data-ng-model="user.password" placeholder="Password" required>
</label>
<button data-ng-click="logIn()" class="button button-full button-positive">
Retry
</button>
<button data-ng-click="resetPassword()" class="button button-full button-positive">
Reset Password
</button>
</div>
</ion-content>
</ion-view>
.config(function($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise('/')
$stateProvider
.state('login', {
url: '/login',
templateUrl: 'partials/login.html',
controller: 'UserController'
})
.state('loginFailed', {
url: '/login/failed',
templateUrl: 'partials/login_failed.html',
controller: 'UserController'
})
})
.controller('UserController', ['$scope', '$state', function($scope, $state) {
$scope.user = {};
$scope.forms = {};
$scope.logIn = function() {
var user = $scope.user
if ($scope.forms.login.$valid) {
console.log('Form valid');
} else {
console.log('Form invalid');
}
};
$scope.register = function() {
var user = $scope.user
if ($scope.forms.login.$valid) {
console.log('Form valid');
} else {
console.log('Form invalid');
}
};
$scope.resetPassword = function() {
var mail = $scope.user.mail
console.log('Reset user password', mail);
$state.go('loginReset')
};
}])
<!-- just last three lines of view following -->
</ion-content>
{{ user.mail }}
</ion-view>