【发布时间】:2017-06-26 14:49:55
【问题描述】:
对不起,问题的长度。我有一些设计问题。
我有一个组件,它将 roomView 数组作为 @Input 并将它们显示在 HTML 页面中。
export class RoomView {
"id": string,
"name": string,
"markerIcon": string,
"backgroundColorClass": string
}
room-browser.component.ts
@Component({
selector: 'room-browser',
templateUrl: 'room-browser.component.html',
})
export class RoomBrowserComponent {
@Input() roomsList: RoomView[]: = [];
}
room-browser.component.html
<div *ngFor="let room of roomsList">
<div class="room.backgroundColorClass">
{{room.name}}
<i class="{{room.markerIcon}}"></i>
</div>
我的通用房间组件为房间浏览器提供房间视图
generic-room.component.ts
@Component({
selector: 'room',
templateUrl: 'room.html',
})
export class GenericRoomComponent implements OnInit {
@Input() source: string;
private roomView: RoomView[] = [];
ngOnInit() {
this.roomView = // i am getting this from backed successfully
// here I need to decide marker icon and background color class based on some criteria which differs from page to page
// I have different sections like space, energy, maintenance etc...
// for space, needs to get space usage for rooms from backend and then decide color
// for energy, needs to get energy usage and decide the colors
// for maintenance, needs get devices information of rooms and decide color
//I want to avoid something like this
if (this.source === 'space') {
// get space usage
} else if (this.source === 'energy') {
// get space usage
} else if (this.source === 'maintenance') {
// get device info and decide color
}
}
}
room.html
<room-browser [roomsList]="roomView"></room-browser>
space.html
<room [source]="space"></room>
energy.html
<room [source]="energy"></room>
maintenance.html
<room [source]="maintenance"></room>
我需要根据不同页面的一些标准来决定标记图标和背景颜色类。
我有不同的部分,如空间、能源、维护等...对于空间,需要从后端获取房间的空间使用情况,然后决定颜色,对于能源需求,获取能源使用情况并确定颜色,对于维护需求,获取房间的设备信息并决定颜色
那么如何以及在哪里可以在通用组件中实现这个用例特定的逻辑?
【问题讨论】:
标签: javascript angular typescript generic-programming use-case