gpt4 book ai didi

javascript - 使用 Angular 4 的 Ionic 3 中组件和提供者(用于全局变量)之间的两种方式数据绑定(bind)

转载 作者:行者123 更新时间:2023-11-30 20:57:29 24 4
gpt4 key购买 nike

我有以下代码:

app.html:

<ion-menu [content]="content">
<ion-content [ngStyle]="{'background': 'linear-gradient(#'+menuColor1+', #'+menuColor2+')'}">
...
</ion-content>
</ion-menu>

<ion-nav #content [root]="rootPage" swipeBackEnabled="false"></ion-nav>

app.components.ts:

import { Component } from '@angular/core';
import { Platform } from 'ionic-angular';
import { StatusBar } from '@ionic-native/status-bar';
import { SplashScreen } from '@ionic-native/splash-screen';

import { TabsPage } from '../pages/tabs/tabs';
import { GlobalsProvider } from '../providers/globals/globals';

@Component({
templateUrl: 'app.html'
})
export class MyApp {
rootPage: any = TabsPage;

menuColor1: string = GlobalsProvider.MENU_COLOR_1;
menuColor2: string = GlobalsProvider.MENU_COLOR_2;

constructor(platform: Platform, statusBar: StatusBar, splashScreen: SplashScreen) {
GlobalsProvider.MENU_COLOR_1 = "f00";
GlobalsProvider.MENU_COLOR_2 = "ff0";

console.log(GlobalsProvider.MENU_COLOR_1); // f00
console.log(this.menuColor1); // 000 (expected: f00)

console.log(GlobalsProvider.MENU_COLOR_2); // ff0
console.log(this.menuColor2); // 000 (expected: ff0)
});

platform.ready().then(() => {
// Okay, so the platform is ready and our plugins are available.
// Here you can do any higher level native things you might need.

statusBar.styleDefault();
splashScreen.hide();
});
}
}

globals.ts:

export const GlobalsProvider = {
MENU_COLOR_1: "000",
MENU_COLOR_2: "000",
}

我想在 app.component.tsglobals.ts 之间进行双向数据绑定(bind),每次使用 vars MENU_COLOR_1MENU_COLOR_2 已更改,也更新 menuColor1menuColor2 值(我将更新 MENU_COLOR_1 MENU_COLOR_2 将来也会来自其他组件,我希望 menuColor1menuColor2 接收这些更改)。

有可能吗?

最佳答案

对象是可变的并且通过引用传递。原始类型,如 string 不是,因此它们不会像您希望的那样改变。所以你应该做的是使用对象:

menuColor1 = GlobalsProvider;
menuColor2 = GlobalsProvider;

ngOnInit() {
GlobalsProvider.MENU_COLOR_1 = "f00";
GlobalsProvider.MENU_COLOR_2 = "ff0";

console.log(GlobalsProvider.MENU_COLOR_1); // f00
console.log(this.menuColor1.MENU_COLOR_1);

console.log(GlobalsProvider.MENU_COLOR_2); // ff0
console.log(this.menuColor2.MENU_COLOR_2);
}

但是要非常小心,因为如前所述,对象是通过引用传递的,所以有时您可能不希望这种行为。

关于javascript - 使用 Angular 4 的 Ionic 3 中组件和提供者(用于全局变量)之间的两种方式数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47502179/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com