Heim > Web-Frontend > js-Tutorial > Hauptteil

Wenn Sie mit Angular beginnen, kennen Sie wirklich die Angular-Version von ToDoList?

寻∝梦
Freigeben: 2018-09-07 17:19:32
Original
1976 Leute haben es durchsucht

Dieser Artikel stellt den Einstieg in AngularJS vor. Dies ist ein Artikel für den Einstieg in AngularJS. Wenn Sie AngularJS noch nicht verstehen, können Sie diesen Artikel jetzt lesen.
(1) Grundkenntnisse

Lesen Sie nicht zuerst die Dokumentation, bevor Sie loslegen, Angular-Schnellstart.

Dann starten~


    Voraussetzung
  1. Install Node, Sie müssen auf die Version achten, Node 6.9.x und npm 3.x.x.


  2. Dann installieren Sie Angular CLI global.
  3. npm install -g @angular/cli
    Nach dem Login kopieren

  4. Projekt erstellen
  5. ng new ng-first
    Nach dem Login kopieren

  6. Entwicklungsserver starten
  7. cd ng-first
    ng serve --open
    Nach dem Login kopieren

    Der Browser öffnet automatisch http://localhost:4200 / , sah das ng-Zeichen, warst du so aufgeregt

    (Handbuch lustig)

    .

  8. Komponente erstellen
  9. Dieser Vorgang erstellt die Datei direkt und konfiguriert sie in der Stammkomponente.

    ng g component components/todolist
    Nach dem Login kopieren

    Wenn Sie mit Angular beginnen, kennen Sie wirklich die Angular-Version von ToDoList?

  10. Dienst erstellen
  11. Formation beibehalten, noch einer.

    ng g service services/storage
    Nach dem Login kopieren

  12. Lass uns unsere Fähigkeiten ausprobieren und Hallo sagen
  13. Gemäß der internationalen Praxis sagen wir zuerst Hallo!

    Fügen Sie die benutzerdefinierte Komponente app-todolist in app.component ein. Dieser Name hängt vom Selektor ab: „app-todolist“ in todolist.component.ts.

    <!--app.component.html-->
    <app-todolist></app-todolist>
    Nach dem Login kopieren

    Fahren Sie fort und definieren Sie eine Variable msg in todolist.component.ts. Diese Syntax ist die Standardroutine von ts. (Manuell mein Gesicht bedecken, eigentlich bin ich nicht sehr gut darin)

    //todolist.component.ts
    export class TodolistComponent implements OnInit {
      public msg: any = 'Hello World !';
    
      constructor() { }
    
      ngOnInit() {
      }
    
    }
    Nach dem Login kopieren
    Daten in todolist.component.html binden

    //todolist.component.html
    <h3> {{msg}} </h3>
    Nach dem Login kopieren
    /*todolist.component.css*/
    h3{
      text-align: center;
      color:  #369;
    }
    Nach dem Login kopieren

    Zum Browser wechseln, auf Thump klicken Bumm, bumm!

    Wenn Sie mit Angular beginnen, kennen Sie wirklich die Angular-Version von ToDoList?Wow, kommen wir zum Punkt.

  14. (2) HTML- und CSS-Teil

Das ist nicht wichtig, es steht nicht im Mittelpunkt dieses Artikels, öffnen Sie einfach die Konsole und kopieren Sie es (

Wie schamlos

). Dies ist HTML. Kopieren Sie es direkt nach todolist.component.html und entfernen Sie ungenutzten Code.

<!--todolist.component.html-->
<header>
  <section>
    <label>ToDoList</label>
    <input>
  </section>
</header>
<section>
  <h2>正在进行
    <span>1</span>
  </h2>
  <ol>
    <li>
      <input>
      <p>记得吃药</p>
      <a>-</a>
    </li>
  </ol>
  <h2>已经完成
    <span>1</span>
  </h2>
  <ul>
    <li>
      <input>
      <p>记得吃饭</p>
      <a>-</a>
    </li>
  </ul>
</section>
<footer>
  Copyright © 2014 todolist.cn
  <a>clear</a>
</footer>
Nach dem Login kopieren

Dies ist der CSS-Stil. Kopieren Sie ihn direkt nach todolist.component.css und kopieren Sie den Textstil nach „styles.css“ im src-Verzeichnis.

/*todolist.component.css*/
header {height:50px;background:#333;background:rgba(47,47,47,0.98);}
section{margin:0 auto;}
label{float:left;width:100px;line-height:50px;color:#DDD;font-size:24px;cursor:pointer;font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;}
header input{float:right;width:60%;height:24px;margin-top:12px;text-indent:10px;border-radius:5px;box-shadow: 0 1px 0 rgba(255,255,255,0.24), 0 1px 6px rgba(0,0,0,0.45) inset;border:none}
input:focus{outline-width:0}
h2{position:relative;}
span{position:absolute;top:2px;right:5px;display:inline-block;padding:0 5px;height:20px;border-radius:20px;background:#E6E6FA;line-height:22px;text-align:center;color:#666;font-size:14px;}
ol,ul{padding:0;list-style:none;}
li input{position:absolute;top:2px;left:10px;width:22px;height:22px;cursor:pointer;}
p{margin: 0;}
li p input{top:3px;left:40px;width:70%;height:20px;line-height:14px;text-indent:5px;font-size:14px;}
li{height:32px;line-height:32px;background: #fff;position:relative;margin-bottom: 10px;
    padding:0 45px;border-radius:3px;border-left: 5px solid #629A9C;box-shadow: 0 1px 2px rgba(0,0,0,0.07);}
ol li{cursor:move;}
ul li{border-left: 5px solid #999;opacity: 0.5;}
li a{position:absolute;top:2px;right:5px;display:inline-block;width:14px;height:12px;border-radius:14px;border:6px double #FFF;background:#CCC;line-height:14px;text-align:center;color:#FFF;font-weight:bold;font-size:14px;cursor:pointer;}
footer{color:#666;font-size:14px;text-align:center;}
footer a{color:#666;text-decoration:none;color:#999;}
@media screen and (max-device-width: 620px) {section{width:96%;padding:0 2%;}}
@media screen and (min-width: 620px) {section{width:600px;padding:0 10px;}}
Nach dem Login kopieren
rrree

Nach dem Kopieren sollte die Seite so aussehen.


Wenn Sie mit Angular beginnen, kennen Sie wirklich die Angular-Version von ToDoList?Okay, das Obige ist unnötiges Vorspiel (Handbuch lustig)
. (3) Implementieren Sie die Funktion von ToDoList

Studieren Sie den js-Quellcode auf ToDoList. Die allgemeine Logik besteht darin, dass der Benutzer ein erledigtes Attribut hinzufügt Der Wert ist „false“, was darauf hinweist, dass der Vorgang ausgeführt wird. Klicken Sie auf die Schaltfläche „Fertig“, und das Attribut „Fertig“ ändert sich in „True“, was darauf hinweist, dass der Vorgang abgeschlossen ist. und kann gelöscht werden. Nach der Aktualisierung des Browsers sind die Daten weiterhin vorhanden, da localStorage von HTML5 verwendet wird.

Die Funktion zum Hinzufügen von Aufgabenelementen

Deklarieren von Aufgabenvariablen

/*src/styles.css*/
body {margin:0;padding:0;font-size:16px;background: #CDCDCD;}
Nach dem Login kopieren
rrree

[(ngModel)] ist eine Angular-Syntax zum Binden von Aufgaben an ein Eingabefeld. Sein Datenfluss ist bidirektional: vom Attribut zum Eingabefeld und vom Eingabefeld zurück zum Attribut.

Bei diesem Schritt hat die Konsole einen Fehler gemeldet.

Die Lösung besteht darin, dass wir uns für die Verwendung des FormsModule-Moduls entscheiden müssen.

//todolist.component.ts
export class TodolistComponent implements OnInit {
  public todo: any = ''; 
  public todoList = [];

  constructor() { }

  ngOnInit() {
  }
  
  addTodo(e) {
    let todoObj = {
      todo: this.todo,
      done: false
    }

    if (e.keyCode == 13) {  //表示回车按钮
      this.todoList.push(todoObj);
      this.todo = '';       //清空输入框
    }
  }
}
Nach dem Login kopieren

Hinzugefügte Elemente in einer Schleife wiedergeben

Integrierte Anweisung *ngFor hinzufügen, um die Liste in einer Schleife zu durchlaufen.

<!--todolist.component.html-->
<header>
  <section>
    <label>ToDoList</label>
    <input>
  </section>
</header>
Nach dem Login kopieren

Sie können die hinzugefügten Elemente sehen.


Wenn Sie mit Angular beginnen, kennen Sie wirklich die Angular-Version von ToDoList?Wechseln Sie, ob das Element abgeschlossen ist, und löschen Sie das Element

Binden Sie die Ereignisse „changeTodo, deleteTodo“

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';  //NgModel lives here

@NgModule({
  
  imports: [
    BrowserModule, 
    FormsModule  //import the FormsModule before binding with [(ngModel)]
  ],
  
})
Nach dem Login kopieren

Das zu seinde Element Hinzugefügte und abgeschlossene Elemente werden in zwei Arrays unterteilt (oder in einem Array platziert und dann basierend auf dem Wert von „Fertig“ gesteuert, ob sie angezeigt werden sollen), aber ich denke, es ist einfacher, in zwei Arrays zu arbeiten.

<h2>正在进行
    <span>{{todoList.length}}</span>
  </h2>
  <ol>
    <li>
      <input>
      <p>{{item.todo}}</p>
      <a>-</a>
    </li>
  </ol>
Nach dem Login kopieren

An diesem Punkt ist diese Funktion abgeschlossen~

Warten Sie, aktualisieren Sie die Seite. Hoppla, die Elemente, die Sie gerade eingegeben haben, sind verschwunden. (Wenn Sie mehr erfahren möchten, besuchen Sie die chinesische PHP-Website

AngularJS Development Manual
, um mehr zu erfahren) Zu diesem Zeitpunkt feiert localStorage sein Debüt! !

StorageService-Dienst erstellen

Um den gleichen Code nicht mehr immer wieder zu kopieren, müssen wir einen einzelnen wiederverwendbaren Datendienst erstellen und ihn in die Komponenten einfügen, die ihn in der Mitte benötigen.

In Schritt 6 von (1) Grundfertigkeiten hat uns angle-cli beim Erstellen eines Dienstes bereits dabei geholfen, die Grundstruktur eines Dienstes zu generieren.
Erstellen Sie Dienste und nutzen Sie sie überall.

  <h2>正在进行
    <span>{{todoList.length}}</span>
  </h2>
  <ol>
    <li>
      <input>
      <p>{{item.todo}}</p>
      <a>-</a>
    </li>
  </ol>
  

已经完成     {{doneList.length}}   

  
Nach dem Login kopieren
        
  •              

    {{item.todo}}

          -     
  •   

Um den Dienst zu nutzen, injizieren Sie ihn einfach.
  public doneList = [];  //再声明一个已完成的数组
  
  deleteTodo(index, done) {
    if (done) {
      this.todoList.splice(index, 1);
    } else {
      this.doneList.splice(index, 1);
    }
  }
  
  changeTodo(index, done) {
    if (done) {
      var tempTodo = this.todoList[index]
      this.doneList.push(tempTodo);
      this.todoList.splice(index, 1);
    } else {
      var tempDone = this.doneList[index]
      this.todoList.push(tempDone);
      this.doneList.splice(index, 1);
    }

  }
Nach dem Login kopieren

Okay, wir können es problemlos und gerne nutzen.

Daten in localStorage speichern

Verwenden Sie this.storage, um den gekapselten Dienst zu nutzen.

Speichern Sie die Daten nach jedem Vorgang. Ist das nicht ein bisschen nutzlos?

//storage.service.ts
export class StorageService {

  constructor() { }
  
  setItem(key, value) {
    localStorage.setItem(key, JSON.stringify(value))
  }
  getItem(key) {
    return JSON.parse(localStorage.getItem(key))
  }

}
Nach dem Login kopieren

Initial event

Die Hook-Methode der OnInit-Schnittstelle heißt ngOnInit und Angular ruft sie sofort nach dem Erstellen der Komponente auf.

Mein Verständnis ist, dass es der Montage in Vue ähnelt?
//todolist.component.ts
import { StorageService } from '../../services/storage.service'  //导入服务
...
constructor(private storage: StorageService) { } //注入服务
Nach dem Login kopieren

Dann sind Sie fertig!

还有页脚的clear按钮

<!--todolist.component.html-->
<footer>
  Copyright © 2014 todolist.cn
  <a>clear</a>
</footer>
Nach dem Login kopieren
clearData() {
    localStorage.clear();
    this.todoList = [];
    this.doneList = [];
  }
Nach dem Login kopieren

说在后面的话

还有拖拽排序的的功能,不写了。

好了,以上就是本篇文章的内容(想看更多就到PHP中文网AngularJS使用手册中学习),有问题的可以在下方留言提问。

Das obige ist der detaillierte Inhalt vonWenn Sie mit Angular beginnen, kennen Sie wirklich die Angular-Version von ToDoList?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage