Komponent- och Mallinteraktion i Angular
Du har redan bekantat dig med grundläggande typer av databindning. Nu ska vi titta på hur dessa tillämpas i praktiken när vi arbetar med TaskComponent
.
Uppgiftsstruktur
Vår uppgiftskomponent kommer att visa uppgiftens titel samt två knappar: en för att ändra uppgiftens status (från "Complete" till "Undo") och en annan för att ta bort uppgiften. Här är den HTML-struktur som kommer att användas:
template.html
style.css
Stilarna har redan definierats. Du kan granska dem genom att byta till filen style.css
.
Komponentimplementering
Vår komponent kommer att arbeta med ett task-objekt, som lagrar information om uppgiften, såsom dess id
, title
och completed
-status. Vi definierar detta objekt i komponentklassen:
export class TaskComponent {
task = { id: 1, title: 'Buy groceries', completed: false };
}
Vi kan visa dessa data i komponentens HTML-mall.
Använda komponentdata i mallen
För att visa data från task
-objektet refererar vi helt enkelt till dess egenskaper direkt i mallen. Till exempel, för att visa uppgiftens titel:
<div class="task-title">{{ task.title }}</div>
Om uppgiften är slutförd ska knappens text ändras. Vi kan använda en ternär operator för att justera knappens text baserat på värdet av task.completed
.
<button class="complete">
{{ task.completed ? 'Undo' : 'Complete' }}
</button>
Om task.completed
är true
visas "Undo" som knapptext, annars visas "Complete". På så sätt anpassas knappens text dynamiskt efter det aktuella tillståndet för task
.
Lägga till dynamiska klasser med egenskapsbindning
Nu ska vi lägga till möjligheten att ändra utseendet på uppgiften baserat på dess tillstånd. Vi använder egenskapsbindning för att villkorligt tillämpa en CSS-klass:
<div class="task" [class.completed]="task.completed">
Detta innebär: om task.completed
är true
, kommer klassen completed
att läggas till på elementet. Annars kommer klassen inte att tillämpas.
Som resultat, när uppgiften är slutförd, kommer det visuella utseendet att ändras: texten blir överstruken, färgen blir grå och bakgrunden ljusgrå. Alla dessa stilar definieras i CSS-klassen .completed
, som jag beskrev ovan.
Händelsebindning till knappar
Nu ska vi binda händelser till knapparna så att lämpliga åtgärder utförs när knapparna klickas på. Vi har två knappar:
-
"Slutför" / "Ångra"-knappen — när den klickas på växlar den uppgiftens slutförandestatus;
-
"Ta bort"-knappen — när den klickas på tas uppgiften bort.
För att göra detta skapar vi två metoder i TaskComponent
:
deleteTask() {
// Method to delete the task. We'll implement it later.
}
toggleTask() {
// Toggles the value of task.completed.
this.task.completed = !this.task.completed;
}
-
Metoden
deleteTask()
kommer att förbli tom för tillfället eftersom vi ännu inte har någon uppgiftslista att ta bort objekt från; -
Metoden
toggleTask()
växlar helt enkelt värdet påtask.completed
. Om uppgiften är markerad som slutförd (true
), markeras den som ofullständig (false
), och vice versa.
För att dessa metoder ska fungera när knapparna klickas på, behöver vi binda dem till knappens klickhändelser. Vi använder händelsebindning med click
-händelsen för att lyssna på klick på knapparna och anropa motsvarande metoder.
template.html
I detta exempel möjliggör händelsebindning att användarens handlingar kopplas till komponentens metoder. "Complete" / "Undo"-knappen anropar metoden toggleTask()
, som växlar tillståndet för task.completed
. Detta ändrar även knappens text från "Complete" till "Undo" beroende på uppgiftens status.
"Delete"-knappen anropar metoden deleteTask()
, som för närvarande inte är implementerad, eftersom borttagning av uppgifter kommer att läggas till senare.
Nu har vi implementerat hela mallen för vår enkla uppgiftskomponent. Så här ser komponenten ut:
task.ts
Komponenten tillhandahåller data, och mallen står för den visuella representationen. Tillsammans skapar de ett interaktivt och användarvänligt gränssnitt för uppgifter, där data visas, utseendet förändras och knapparna anpassas efter uppgiftens status.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Awesome!
Completion rate improved to 3.13
Komponent- och Mallinteraktion i Angular
Svep för att visa menyn
Du har redan bekantat dig med grundläggande typer av databindning. Nu ska vi titta på hur dessa tillämpas i praktiken när vi arbetar med TaskComponent
.
Uppgiftsstruktur
Vår uppgiftskomponent kommer att visa uppgiftens titel samt två knappar: en för att ändra uppgiftens status (från "Complete" till "Undo") och en annan för att ta bort uppgiften. Här är den HTML-struktur som kommer att användas:
template.html
style.css
Stilarna har redan definierats. Du kan granska dem genom att byta till filen style.css
.
Komponentimplementering
Vår komponent kommer att arbeta med ett task-objekt, som lagrar information om uppgiften, såsom dess id
, title
och completed
-status. Vi definierar detta objekt i komponentklassen:
export class TaskComponent {
task = { id: 1, title: 'Buy groceries', completed: false };
}
Vi kan visa dessa data i komponentens HTML-mall.
Använda komponentdata i mallen
För att visa data från task
-objektet refererar vi helt enkelt till dess egenskaper direkt i mallen. Till exempel, för att visa uppgiftens titel:
<div class="task-title">{{ task.title }}</div>
Om uppgiften är slutförd ska knappens text ändras. Vi kan använda en ternär operator för att justera knappens text baserat på värdet av task.completed
.
<button class="complete">
{{ task.completed ? 'Undo' : 'Complete' }}
</button>
Om task.completed
är true
visas "Undo" som knapptext, annars visas "Complete". På så sätt anpassas knappens text dynamiskt efter det aktuella tillståndet för task
.
Lägga till dynamiska klasser med egenskapsbindning
Nu ska vi lägga till möjligheten att ändra utseendet på uppgiften baserat på dess tillstånd. Vi använder egenskapsbindning för att villkorligt tillämpa en CSS-klass:
<div class="task" [class.completed]="task.completed">
Detta innebär: om task.completed
är true
, kommer klassen completed
att läggas till på elementet. Annars kommer klassen inte att tillämpas.
Som resultat, när uppgiften är slutförd, kommer det visuella utseendet att ändras: texten blir överstruken, färgen blir grå och bakgrunden ljusgrå. Alla dessa stilar definieras i CSS-klassen .completed
, som jag beskrev ovan.
Händelsebindning till knappar
Nu ska vi binda händelser till knapparna så att lämpliga åtgärder utförs när knapparna klickas på. Vi har två knappar:
-
"Slutför" / "Ångra"-knappen — när den klickas på växlar den uppgiftens slutförandestatus;
-
"Ta bort"-knappen — när den klickas på tas uppgiften bort.
För att göra detta skapar vi två metoder i TaskComponent
:
deleteTask() {
// Method to delete the task. We'll implement it later.
}
toggleTask() {
// Toggles the value of task.completed.
this.task.completed = !this.task.completed;
}
-
Metoden
deleteTask()
kommer att förbli tom för tillfället eftersom vi ännu inte har någon uppgiftslista att ta bort objekt från; -
Metoden
toggleTask()
växlar helt enkelt värdet påtask.completed
. Om uppgiften är markerad som slutförd (true
), markeras den som ofullständig (false
), och vice versa.
För att dessa metoder ska fungera när knapparna klickas på, behöver vi binda dem till knappens klickhändelser. Vi använder händelsebindning med click
-händelsen för att lyssna på klick på knapparna och anropa motsvarande metoder.
template.html
I detta exempel möjliggör händelsebindning att användarens handlingar kopplas till komponentens metoder. "Complete" / "Undo"-knappen anropar metoden toggleTask()
, som växlar tillståndet för task.completed
. Detta ändrar även knappens text från "Complete" till "Undo" beroende på uppgiftens status.
"Delete"-knappen anropar metoden deleteTask()
, som för närvarande inte är implementerad, eftersom borttagning av uppgifter kommer att läggas till senare.
Nu har vi implementerat hela mallen för vår enkla uppgiftskomponent. Så här ser komponenten ut:
task.ts
Komponenten tillhandahåller data, och mallen står för den visuella representationen. Tillsammans skapar de ett interaktivt och användarvänligt gränssnitt för uppgifter, där data visas, utseendet förändras och knapparna anpassas efter uppgiftens status.
Tack för dina kommentarer!