Javascript 从Angular 2构造函数传递变量,然后将语句传递给模板
我使用的安全登录系统有点问题。我要做的是检查设备的本机存储中是否有一个名为“user”的项,然后检查数据库中是否存在该用户,并从数据库中的行中读取唯一id,以便在方法中使用Javascript 从Angular 2构造函数传递变量,然后将语句传递给模板,javascript,angular,typescript,ionic2,Javascript,Angular,Typescript,Ionic2,我使用的安全登录系统有点问题。我要做的是检查设备的本机存储中是否有一个名为“user”的项,然后检查数据库中是否存在该用户,并从数据库中的行中读取唯一id,以便在方法中使用 import {Component} from "@angular/core"; import { NativeStorage } from 'ionic-native'; import {Events, NavController, NavParams, ModalController, LoadingController
import {Component} from "@angular/core";
import { NativeStorage } from 'ionic-native';
import {Events, NavController, NavParams, ModalController, LoadingController} from 'ionic-angular';
import {Login} from '../login/login';
import {ChallengePage} from '../challenge/challenge';
import {AddTeamPage} from '../add-team/add-team';
import {EditTeamPage} from '../edit-team/edit-team';
import {Users} from '../../providers/users/users';
import {Teams} from '../../providers/teams/teams';
import {Results} from '../../providers/results/results';
import {Players} from '../../providers/players/players';
import {Packs} from '../../providers/packs/packs';
@Component({
templateUrl: 'dashboard.html'
})
export class Dashboard {
_id: string;
user: any;
team: any;
teamExists: boolean;
gamesPlayed: boolean;
sample: any;
strip: any;
last5: any;
constructor(
private nav: NavController,
public events: Events,
private _navParams: NavParams,
private playerService: Players,
private userService: Users,
private teamService: Teams,
private resultService: Results,
private packService: Packs,
private modalCtrl: ModalController,
private loadingCtrl: LoadingController
) {
let loading = this.loadingCtrl.create({
content: "Loading..."
});
loading.present();
this.teamExists = false;
this.gamesPlayed = false;
var user = {};
var _id = {};
//main id
NativeStorage.getItem('user')
.then(function (data) {
user = data;
console.log("native storage object found");
userService.accountExists(this.user.email).then((data) => {
user = data;
if (user) {
_id = user['_id'];
console.log("user found!", user);
console.log("_id for logged in user", _id);
} else {
console.log("no existing user account found!");
nav.setRoot(Login);
nav.push(Login);
nav.pop();
}
});
}, function (error) {
console.error("Error getting user from native storage");
});
}
addTeam(id) {
this.nav.push(AddTeamPage, { 'user_id': id });
}
编辑:在模板代码中添加以调用函数
<ion-header class="gradient-dark-up">
<ion-navbar class="navbar-primary">
<button ion-button color="main" icon-left menuToggle>
<ion-icon class="header-main" name="menu"></ion-icon>
</button>
<ion-title><h1 class="header-main">Dashboard</h1></ion-title>
<ion-buttons end>
<button ion-button icon-only color="primary" *ngIf="!teamExists" (click)="addTeam(_id)"><ion-icon class="header-main" name="add"></ion-icon></button>
</ion-buttons>
</ion-navbar>
</ion-header>
仪表板
因此,addTeam的id应该通过单击模板上的按钮读取,但是当我尝试传入_id时,它总是未定义的,即使在构造函数中,当我将值输出到控制台时,它会显示正确的_id
我想这只是因为我缺乏安格拉尔绊倒我的经验,所以如果我做了一些根本错误的事情,请随时纠正我
提前感谢。如果您使用
此。
访问当前类的属性,请不要使用函数(){
NativeStorage.getItem('user')
.then(function (data) {
而是使用箭头函数
NativeStorage.getItem('user')
.then((data) => {
如果使用
this.
访问当前类的属性,请不要使用function(){
NativeStorage.getItem('user')
.then(function (data) {
而是使用箭头函数
NativeStorage.getItem('user')
.then((data) => {
您可以向我们展示包含
addTeam()
的模板/组件吗?我已经添加了调用代码的位置。您可以向我们展示包含addTeam()的模板/组件吗
在其中?我已经添加了调用代码的位置。非常感谢您,切换到箭头函数并使用它。工作起来很有魅力!非常感谢您,切换到箭头函数并使用它。工作起来很有魅力!