


Kombination von BootstrapTable mit KnockoutJS zur Implementierung von Hinzufügungs-, Lösch-, Änderungs- und Abfragefunktionen [1]_Javascript-Kenntnisse
Bootstrap ist ein Front-End-Framework, das Webentwicklern viele Vorteile bietet. Die Benutzeroberfläche ist sehr hochwertig und edel. Theoretisch ist es nicht erforderlich, eine CSS-Zeile zu schreiben. Fügen Sie dem Tag einfach die entsprechenden Attribute hinzu.
KnockoutJS ist ein in JavaScript implementiertes MVVM-Framework. Sehr cool. Nachdem beispielsweise die Listendatenelemente hinzugefügt oder gelöscht wurden, ist es nicht erforderlich, das gesamte Kontrollfragment zu aktualisieren oder JS selbst zu schreiben, um Knoten hinzuzufügen oder zu löschen. Sie müssen lediglich die Vorlage und Attribute vordefinieren, die ihrer Syntax entsprechen Definition. Einfach ausgedrückt müssen wir uns nur auf den Datenzugriff konzentrieren.
1. Einführung in Knockout.js
1. Knockout.js und MVVM
Heutzutage muss ich bedauern, dass es als Programmierer wirklich schwierig ist, endlose Technologien zu erlernen. es sei denn, du verwandelst dich! Das Meer des Leidens ist grenzenlos, es liegt an Ihnen, zu entscheiden, ob Sie umkehren wollen oder nicht!
Knockout.js ist ein leichtes Front-End-Framework, das auf dem MVVM-Muster basiert. Wie leicht ist es? Laut der neuesten Version v3.4.0, die auf der offiziellen Website gezeigt wird, sind es nur 22 KB. Es kann die Bindung von Datenmodell und Schnittstellen-DOM auf benutzerfreundliche Weise handhaben. Das Wichtigste ist, dass die Bindung in beide Richtungen erfolgt, was bedeutet, dass sich auch die Daten im Schnittstellen-DOM entsprechend ändern Wenn sich wiederum die Daten in der Datenbank ändern, reagiert auch das Datenmodell auf diese Änderung. Dies kann die Menge unseres Front-End-Codes erheblich reduzieren und die Wartung unserer Schnittstelle vereinfachen. Wir müssen nicht mehr viele Ereignisüberwachungsdatenmodelle und Schnittstellen-DOM-Änderungen schreiben. Der folgende Blogger wird diese beiden Punkte anhand eines Anwendungsbeispiels veranschaulichen.
Offizielle Website von Knockout.js: http://knockoutjs.com
Open-Source-Adresse von Knockout.js: https://github.com/knockout/knockout
MVVM-Muster: Dies ist ein Entwurfsmuster zum Erstellen von Benutzeroberflächen. MVVM unterteilt es in drei Teile: Model, View und ViewModel ist das Datenmodell, View ist unsere Ansicht und ViewModel ist ein Ansichtsmodell, das für die Bindung verwendet wird. DOM-Elemente über dem Datenmodell und der Ansicht. Wenn Sie WPF und Silverlight verwendet haben, sollte es kein Problem sein, dies zu verstehen. Wenn Sie dies nicht getan haben, spielt es keine Rolle. Nachdem Sie diesen Artikel gelesen haben, werden Sie ein allgemeines Verständnis haben.
2. Das einfachste Beispiel
Wenn Sie Knockout.js von Grund auf verwenden, benötigen Sie Folgendes: mindestens die folgenden vier Schritte ausführen
2.1, Gehen Sie zur offiziellen Website, um die Datei knockout.js herunterzuladen, und zitieren Sie sie dann auf der Ansichtsseite.
<script src="~/scripts/knockout/knockout-3.4.0.min.js"></script>
Hinweis: knockout.js erfordert keine Unterstützung von jquery. Wenn Ihr Projekt jquery-bezogene Vorgänge verwenden muss, verweisen Sie andernfalls nur auf jquery oben Einfach ablegen.
2.2, Definition ViewModel
Was ist Viewmodel? Tatsächlich sieht es in js wie ein JSON-Objekt aus. Wir definieren ein Ansichtsmodell:
var myViewModel = { Name: "Lilei", profession: "软件工程师", };
2.3, definieren Sie die Bezeichnung der Bindungsdatenbindung in der Ansichtsansicht
<div> 姓名:<label data-bind="text:Name"></label><br /> 职业:<input type="text" data-bind="textinput:Profession" /> </div>
Hinweis: Der dem Eingabe-Tag entsprechende Text muss eine Texteingabe verwenden, während der Text des normalen Tags Text sein kann.
2.4. Bindung aktivieren
Nach Abschluss der oben genannten drei Schritte müssen Sie auch die Bindung von Knockout aktivieren
ko.applyBindings(myViewModel);
Durch diese vier Schritte wird grundsätzlich die einfachste Viewmodel-Datenbindung implementiert.
Wenn Sie vorsichtig genug sind, werden Sie feststellen, dass die Methode ko.applyBindings() zwei Parameter hat. Der erste ist das Ansichtsmodell, das wir binden müssen. Aus ko.applyBindings(myViewModel); können wir ersehen, dass der zweite Parameter ein optionaler Parameter ist, der den Umfang der an das Ansichtsmodell gebundenen Bezeichnung darstellt. Wir ändern beispielsweise den obigen Code:
<div> 姓名:<label id="lb_name" data-bind="text:Name"></label><br /> 职业:<input type="text" data-bind="textinput:Profession" /> </div> ko.applyBindings(myViewModel,document.getElementById("lb_name"));
Es ist ersichtlich, dass der zweite Parameter den Umfang von myViewModel einschränkt, das heißt, er wird nur wirksam, wenn er mit der ID = „lb_name“ an das Tag gebunden ist Der Parameter ist ein Div-Container-Tag. Er gibt an, dass der Gültigkeitsbereich der Bindung alle Untertags unter dem Div umfasst.
3. Überwachungseigenschaften
Bis zu den oben genannten vier Schritten können wir keine Wirkung erkennen, sondern nur Welchen Sinn hat es, die Daten eines JSON-Objekts an das HTML-Tag zu binden? Verkompliziert es nicht ein einfaches Problem? Machen Sie sich keine Sorgen, erleben Sie das Wunder jetzt! Wie oben erwähnt, ist die wichtigste Bedeutung des Knockouts die Zwei-Wege-Bindung. Wie erreichen wir also unsere Zwei-Wege-Bindung? Die Antwort ist die Überwachung von Eigenschaften.
In Knockout gibt es drei Kernüberwachungsattribute: Observables, DependentObservables und ObserveArray. Es scheint unangemessen, es Beobachtungsattribut oder Beobachtungsattribut zu nennen .
3.1. Observables: Überwachungsattribute
Wir ändern das obige Beispiel wie folgt:
Index3 <script src="~/scripts/knockout/knockout-3.4.0.min.js"></script> <div> 姓名:<label data-bind="text:Name"></label><br /> 职业:<input type="text" data-bind="textinput:Profession" /> </div>
ko.observable("Lilei") 这一句的意义是将viewmodel的Name属性添加成为监控属性,一定Name属性变成监控属性,神奇的事情就发生了,我们来看看当我们写myViewModel.的时候:
Name由原来的属性变成方法了,也就是说一旦添加了ko.observable(),那么对应的属性就会变成方法,那么对于Name的取值和赋值都需要使用myViewModel.Name()来处理。
代码释疑:很显然 myViewModel.Name($(this).val()); 这一句将当前文本框的值赋给了Name属性,由于界面绑定了Name属性,所以label里面的值也随之发生了变化。或者你会说,这个使用textchange事件也可以做到的,只要将当前文本框的值赋给label标签,也可以达到这个效果,这个不算什么。确实,你的写法也可以达到目的,但是我们的监控属性的意义在于,任何地方改变了Name的值,界面都会随之变化,而不用每个地方去给label标签赋值,JS里面只需要把关注点方法myViewModel.Name()上面即可。是不是很厉害~~
3.2、DependentObservables:监控依赖属性
如果看了上面的监控属性还没过瘾?下面再来看看监控依赖属性的使用。
我们将代码再改下看看:
Index3 <script src="~/scripts/knockout/knockout-3.4.0.min.js"></script>姓名:
职业:
描述:
代码释疑:通过添加监控依赖属性 ko.dependentObservable() 将Des属性的值能同时监控到Name和Profession两个的变化,其中任何一个发生变化,Des绑定的标签都会触发改变,这样做的最大好处就是避免了我们js去操作dom的麻烦,有点意思吧。
3.3、ObservableArray;监控数组
除了上面两种,ko还支持对数组对象的监控。我们来看一个例子:
Index3 <script src="~/scripts/knockout/knockout-3.4.0.min.js"></script>
代码释疑:以上通过ko.observableArray()这个方法添加了对数组对象的监控,也就是说,js里面任何地方只要对deptArr数组对象做了数组的改变,都会触发UI给出相应。需要注意的一点是,监控数组实际上是监控的数组对象本身,对于数组对象里面的子对象属性发生变化,是无法监控到的。比如我们将点击事件改成这样:
$(function () { $("#btn_test").on("click", function () { deptArr[1].Name = "aaa"; }); });
由此说明数组监控实际上监控的是数组对象本身,对于数组里面元素的属性变化不会监控。如果确实需要对数据里面对象的属性变化进行监控,需要再对数据里面对象属性使用ko.observable(),两者联合使用。有兴趣的可以试试。
4、ko里面常见的data-bind属性
上文中,我们使用了多个data-bind属性,那么在knockout里面,到底有多少个这种data-bind的属性呢。这里我们列出一些常用的属性。
4.1、text和inputText
text,顾名思义就是文本的意思,这个绑定属性一般用于

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Häufig gestellte Fragen und Lösungen für das Ticket-Ticket-Ticket-Ticket in Front-End im Front-End-Entwicklungsdruck ist der Ticketdruck eine häufige Voraussetzung. Viele Entwickler implementieren jedoch ...

Es gibt kein absolutes Gehalt für Python- und JavaScript -Entwickler, je nach Fähigkeiten und Branchenbedürfnissen. 1. Python kann mehr in Datenwissenschaft und maschinellem Lernen bezahlt werden. 2. JavaScript hat eine große Nachfrage in der Entwicklung von Front-End- und Full-Stack-Entwicklung, und sein Gehalt ist auch beträchtlich. 3. Einflussfaktoren umfassen Erfahrung, geografische Standort, Unternehmensgröße und spezifische Fähigkeiten.

JavaScript ist der Eckpfeiler der modernen Webentwicklung. Zu den Hauptfunktionen gehören eine ereignisorientierte Programmierung, die Erzeugung der dynamischen Inhalte und die asynchrone Programmierung. 1) Ereignisgesteuerte Programmierung ermöglicht es Webseiten, sich dynamisch entsprechend den Benutzeroperationen zu ändern. 2) Die dynamische Inhaltsgenerierung ermöglicht die Anpassung der Seiteninhalte gemäß den Bedingungen. 3) Asynchrone Programmierung stellt sicher, dass die Benutzeroberfläche nicht blockiert ist. JavaScript wird häufig in der Webinteraktion, der einseitigen Anwendung und der serverseitigen Entwicklung verwendet, wodurch die Flexibilität der Benutzererfahrung und die plattformübergreifende Entwicklung erheblich verbessert wird.

Wie fusioniere ich Array -Elemente mit derselben ID in ein Objekt in JavaScript? Bei der Verarbeitung von Daten begegnen wir häufig die Notwendigkeit, dieselbe ID zu haben ...

Diskussion über die Realisierung von Parallaxe -Scrolling- und Elementanimationseffekten in diesem Artikel wird untersuchen, wie die offizielle Website der Shiseeido -Website (https://www.shiseeido.co.jp/sb/wonderland/) ähnlich ist ...

Eingehende Diskussion der Ursachen des Unterschieds in der Konsole.log-Ausgabe. In diesem Artikel wird die Unterschiede in den Ausgabeergebnissen der Konsolenfunktion in einem Code analysiert und die Gründe dafür erläutert. � ...

JavaScript zu lernen ist nicht schwierig, aber es ist schwierig. 1) Verstehen Sie grundlegende Konzepte wie Variablen, Datentypen, Funktionen usw. 2) Beherrschen Sie die asynchrone Programmierung und implementieren Sie sie durch Ereignisschleifen. 3) Verwenden Sie DOM -Operationen und versprechen Sie, asynchrone Anfragen zu bearbeiten. 4) Vermeiden Sie häufige Fehler und verwenden Sie Debugging -Techniken. 5) Die Leistung optimieren und Best Practices befolgen.

Erforschen Sie die Implementierung der Funktion des Bedien- und Drop-Einstellungsfunktion der Panel ähnlich wie VSCODE im Front-End. In der Front-End-Entwicklung wird VSCODE ähnlich wie VSCODE implementiert ...
