Angbe中的Newbee,如何使用词典?

时间:2017-10-16 09:45:56

标签: arrays angular dictionary ionic-framework indexing

我是一名C#程序员,正在努力学习Angular和Ionic。 我想像C#一样用字典做一些事情:

export class HomePage {
   private times = [
     {key: 'clockOn',   value: '09:00'},
     {key: 'lunchTime', value: '12:00'},
     {key: 'backToWork',value: '13:00'},
     {key: 'clockOff',  value: '18:00'}
   ];
}

getHour(name: string) {
   if(this.times[name] === 'clockOn'){
      console.log('time: ' + this.times[name].value);
}

关于HTML

<ion-datetime class="time" id="coff" displayFormat="HH:mm" 
   [(ngModel)]="cOff" (ionChange)="getHour('clockOn')">
</ion-datetime>

在Chrome控制台上,我看到:

  

clockOn
未定义

首先,这是访问成员'价值'的正确sintax吗?

this.times[0].value 

我想知道是否可以使用字符串作为索引器(键)访问数组元素,就像我们在C#中使用字典

一样

例如:

this.times['clockOn'].value //would bring me its value like '09:00'

或访问元素的唯一方法是使用数字作为索引器?如下所示

this.times[0].key // bring me 'clockOn'
this.times[0].value // bring me '09:00'

2 个答案:

答案 0 :(得分:1)

Dictionary是Angular / JavaScript与C#不同。

所以你的代码:

->getMapper()

这不起作用。

你必须使用

this.times['clockOn'].value

如果要使用像array [key]这样的键进行访问,则返回值以这种方式运行循环:

this.times[0].key // bring me 'clockOn'
this.times[0].value // bring me '09:00'

希望它有所帮助。

答案 1 :(得分:0)

就个人而言,我只会修改你的数据结构,如果它们只是硬编码的值。

  private times = {
        clockOn: '09:00',
        lunchTime: '12:00',
        backToWork: '13:00',
        clockOff: '18:00'
    };

    getHour(key: string)
    {
        if (this.times[name] === 'clockOn')
        {
            console.log('time: ' + this.times[name].value);
        }
    }

    <span *ngFor="(key, value) in times" *ngClick=getHour(key)>{{value}}</span>

拥有一个具有唯一键的对象,您可以使用括号表示法查找所需的项目更有效,因为它允许快速简单的查找。

如果您想使用原始数据结构,则必须传入重复项的索引,以便可以访问数组中的正确项。

所以你的标记看起来像这样:

&lt; span *ngFor="time in times" let i=index; *ngClick=getHour(i)>{{value}}</span>

getHour(index: number)
        {
            if (this.times[index].key === 'clockOn')
            {
                console.log('time: ' + this.times[index].value);
            }
        }