- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
将 Ionic 2 与 Typescript 结合使用。
我想让用户为列表中的每个元素选择背景颜色。
问题:如何获取对第 i 个元素的引用?选择任何元素只会更改列表中第一个元素的背景。
现在是一些代码:
NOTE.HTML
<ion-content class='lista'>
<ion-list reorder="true" (ionItemReorder)="reorderItems($event)">
<ion-item-sliding *ngFor="let alimento of listaSpesa">
<ion-item text-wrap class="popover-page" #popoverList> // FOR BACKGROUND
<ion-grid>
<ion-row center>
<ion-col width-10 (click)="setPopOver($event, alimento)">
<ion-buttons>
<button dark clear disabled full>
<ion-icon name="more"></ion-icon>
</button>
</ion-buttons>
</ion-col>
<ion-col width-10>
<img src="{{alimento.userImg}}" class="imgAlimenti" />
</ion-col>
<ion-col width-80>
<ion-row>{{alimento.id}} - {{alimento.id_lista}} </ion-row>
<ion-row><p>{{alimento.descrizione}} - </p></ion-row>
</ion-col>
</ion-row>
</ion-grid>
</ion-item>
</ion-item-sliding>
</ion-list>
</ion-content>
.CSS
.popover-page {
ion-row,
ion-col {
padding: 0;
}
.row-dots {
text-align: center;
.dot {
height: 3rem;
width: 3rem;
border-radius: 50%;
margin: 10px auto;
position: relative;
border: 1px solid white;
}
}
.dot-white { background-color: rgb(255,255,255); }
.dot-tan { background-color: rgb(249,241,228); }
.dot-grey { background-color: rgb(76,75,80); }
.dot-black { background-color: rgb(0,0,0); }
.dot.selected {
border-width: 2px;
border-color: #327eff;
}
}
.TS
@Component({
templateUrl: './build/pages/notes/notes.html'
})
export class NotesPage {
@ViewChild('popoverList', {read: ElementRef}) content: ElementRef; // FOR REFERENCE
constructor(private popoverCtrl: PopoverController){}
setPopOver(myEvent, alimento: Alimento) { // POPOVER
console.log('--> PopoverEditAlimento: ENTERED');
let index = this.listaSpesa.indexOf(alimento);
if (index > -1) {
let popover = this.popoverCtrl.create(PopoverDetailsPicker, {contentEle: this.content.nativeElement});
popover.onDidDismiss(val => {
if (val != null) {
console.log('SCELTA FUNZIONE:', val); // SOME STUFF
}
console.log('--> PopoverEditAlimento: CLOSED');
});
popover.present({
ev: myEvent
});
} else {
console.log('PopoverEditAlimento: ERROR');
}
}
}
@Component({ // POPOVER DEFINITION
template: `
<ion-list radio-group class="popover-page">
<ion-row class="row-dots">
<ion-col>
<button (click)="changeBackground('white')" category="dot" class="dot-white" [class.selected]="background == 'white'"></button>
</ion-col>
<ion-col>
<button (click)="changeBackground('tan')" category="dot" class="dot-tan" [class.selected]="background == 'tan'"></button>
</ion-col>
<ion-col>
<button (click)="changeBackground('grey')" category="dot" class="dot-grey" [class.selected]="background == 'grey'"></button>
</ion-col>
<ion-col>
<button (click)="changeBackground('black')" category="dot" class="dot-black" [class.selected]="background == 'black'"></button>
</ion-col>
</ion-row>
<button ion-item (click)="switch(0)">
<ion-icon name="copy"></ion-icon>
Cambia Titolo
</button>
<button ion-item (click)="switch(1)">
<ion-icon name="clipboard"></ion-icon>
Cambia Descrizione
</button>
<button ion-item (click)="switch(2)">
<ion-icon name="mic"></ion-icon>
Detta nuovo titolo
</button>
</ion-list>
`
})
class PopoverDetailsPicker {
background: string;
contentEle: any;
colors = {
'white': {
'bg': 'rgb(255, 255, 255)'
},
'tan': {
'bg': 'rgb(249, 241, 228)'
},
'grey': {
'bg': 'rgb(76, 75, 80)'
},
'black': {
'bg': 'rgb(0, 0, 0)'
},
};
constructor(private viewCtrl: ViewController, private navParams: NavParams) {}
ngOnInit() {
if (this.navParams.data) {
this.contentEle = this.navParams.data.contentEle;
this.background = this.getColorName(this.contentEle.style.backgroundColor);
}
}
getColorName(background) {
let colorName = 'white';
if (!background) return 'white';
for (var key in this.colors) {
if (this.colors[key].bg === background) {
colorName = key;
}
}
return colorName;
}
changeBackground(color) {
this.background = color;
this.contentEle.style.backgroundColor = this.colors[color].bg;
}
switch(scelta: number) {
if (scelta) {
this.viewCtrl.dismiss(scelta); // ritorno la funzione scelta dall'utente
}
}
}
简单来说,我的代码总是只引用第一个元素。
PS:我为我糟糕的英语提前道歉。
最佳答案
已解决(与开始有点不同):
.HTML 将其添加到您的容器中。
<ion-item text-wrap [ngStyle]="{'background-color': alimento.colore}" class="popover-page" #popoverList>
</ion-item>
.TS
@Component({
templateUrl: './build/pages/notes/notes.html',
})
export class NotesPage {
constructor(private popoverCtrl: PopoverController) {}
setPopOver(myEvent, alimento: Alimento) {
let index = this.listaSpesa.indexOf(alimento);
if (index > -1) {
let popover = this.popoverCtrl.create(PopoverDetailsPicker, {coloreBG: this.listaSpesa[index].colore});
popover.onDidDismiss(val => {
if (val !== null) {
switch (val) {
case 'white':
this.listaSpesa[index].colore = '#ffffff';
break;
case 'lightBlue':
this.listaSpesa[index].colore = '#ccf5ff';
break;
case 'lightRed':
this.listaSpesa[index].colore = '#ffd1b3';
break;
case 'lightGreen':
this.listaSpesa[index].colore = '#ccffcc';
break;
case 'lightYellow':
this.listaSpesa[index].colore = '#ffffb3';
break;
default:
Toast.show('Scelta non corretta.', '1000', 'center').subscribe(toast => {});
}
}
});
popover.present({
ev: myEvent
});
}
}
}
@Component({ // POPOVER DEFINITION
template: `
<ion-list radio-group class="popover-page">
<ion-row class="row-dots">
<ion-col>
<button (click)="switch('white')" category="dot" class="dot-white" [class.selected]="background == 'white'"></button>
</ion-col>
<ion-col>
<button (click)="switch('lightBlue')" category="dot" class="dot-lightBlue" [class.selected]="background == 'lightBlue'"></button>
</ion-col>
<ion-col>
<button (click)="switch('lightRed')" category="dot" class="dot-lightRed" [class.selected]="background == 'lightRed'"></button>
</ion-col>
<ion-col>
<button (click)="switch('lightGreen')" category="dot" class="dot-lightGreen" [class.selected]="background == 'lightGreen'"></button>
</ion-col>
<ion-col>
<button (click)="switch('lightYellow')" category="dot" class="dot-lightYellow" [class.selected]="background == 'lightYellow'"></button>
</ion-col>
</ion-row>
</ion-list>
`
})
class PopoverDetailsPicker {
background: string;
contentEle: any;
colors = {
'white': {
'bg': '#ffffff'
},
'lightBlue': {
'bg': '#ccf5ff'
},
'lightRed': {
'bg': '#ffd1b3'
},
'lightGreen': {
'bg': '#ccffcc'
},
'lightYellow': {
'bg': '#ffffb3'
},
};
constructor(private viewCtrl: ViewController, private navParams: NavParams) {}
ngOnInit() {
if (this.navParams.data) {
this.contentEle = this.navParams.data.coloreBG;
this.background = this.getColorName(this.contentEle);
}
}
getColorName(background) {
let colorName = 'white';
if (!background) return 'white';
for (var key in this.colors) {
if (this.colors[key].bg === background) {
colorName = key;
}
}
return colorName;
}
switch(scelta: any) {
if (scelta !== null) {
this.viewCtrl.dismiss(scelta); // ritorno la funzione scelta dall'utente
}
}
}
关于html - 为列表的任何特定元素设置背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39163333/
这个问题已经有答案了: Is there any way to accept only numeric values in a JTextField? (20 个回答) It's possible i
我使用戴尔 XPS M1710。笔记本电脑的盖子、侧面扬声器和前置扬声器都有灯(3 组灯可以单独调节)和鼠标垫下方的灯。在 BIOS 中,我可以更改这些灯的颜色,至少是每个组。另外,我可以在鼠标垫下打
我知道我可以使用 在 iOS 5 中打开设置应用 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs://"
我有一个 Django 应用程序,我正在尝试为其设置文档。目录结构如下: - doc - project | - manage.py 我已经设置了路径以便 Sphinx 可以看到东西,但是当我尝试使用
我正在使用 768mb ram 运行 centos 5.5。我一直在日志中获取 server reached MaxClients setting, consider raising the MaxC
我在具有以下配置的服务器内运行了 Drupal 安装: StartServers 5 MinSpareServers 5 MaxSpareServers 15 MaxClien
是否可以使用 Microsoft.Web.Administration 包为给定的 location 配置 asp 设置? 我想以编程方式将以下部分添加到本地 IIS applicationHost.
我一直在阅读为 kube-proxy 提供参数的文档,但没有解释应该如何使用这些参数。我使用 az aks create 创建我的集群使用 azure-cli 程序,然后我获得凭据并使用 kubect
我想知道与在 PHP 中使用 setcookie() 函数相比,在客户端通过 JavaScript 设置一些 cookie 是否有任何明显的优势?我能想到的唯一原因是减少一些网络流量(第一次)。但不是
我有一个按钮可以将 body class 设置为 .blackout 我正在使用 js-cookie设置cookie,下面的代码与我的按钮相关联。 $('#boToggle').on('click'
我有一堆自定义的 HTML div。我将其中的 3 存储在具有 slide 类的 div 中。然后,我使用该幻灯片类调用 slick 函数并应用如下设置: $('.slide').slick({
我正在创建一个应该在 Windows 8(桌面)上运行的应用 我需要: 允许用户使用我的应用启动“文件历史记录”。我需要找到打开“文件历史记录”的命令行。 我需要能够显示“文件历史记录”的当前设置。
我刚买了一台新的 MacBook Pro,并尝试在系统中设置 RVM。我安装了 RVM 并将默认设置为 ➜ rvm list default Default Ruby (for new shells)
由于有关 Firestore 中时间戳行为即将发生变化的警告,我正在尝试更改我的应用的初始化代码。 The behavior for Date objects stored in Firestore
在 ICS 中,网络 -> 数据使用设置屏幕中现在有“限制后台数据”设置。 有没有办法以编程方式为我的应用程序设置“限制后台数据”? 或 有没有办法为我的应用程序调出具有选项的“数据使用”设置? 最佳
我正在尝试使用 NextJS 应用程序设置 Jest,目前在 jest.config.js : module.exports = { testPathIgnorePatterns: ["/.n
我最近升级到 FlashDevelop 4,这当然已经将我之前的所有设置恢复到原来的状态。 我遇到的问题是我无法在新设置窗口的哪个位置找到关闭它在方括号、大括号等之前插入的自动空格的选项。 即它会自动
有没有办法以编程方式访问 iPhone/iPod touch 设置? 谢谢。比兰奇 最佳答案 大多数用户设置可以通过读取存储在 /User/Library/Preferences/ 中的属性列表来访问
删除某些值时,我需要选择哪些设置来维护有序队列。我创建了带有自动增量和主键的 id 的表。当我第一次插入值时,没问题。就像 1,2,3,4,5... 当删除某些值时,顺序会发生变化,例如 1,5,3.
我正在尝试设置示例 Symfony2 项目,如此处所示 http://symfony.com/doc/current/quick_tour/the_big_picture.html 在访问 confi
我是一名优秀的程序员,十分优秀!