Ich lerne immer noch angularjs und ich habe ein Problem mit Verständnis Unterschied zwischen $scope
und model
Objekt und das blockiert mich derzeit zu organisieren (verwenden Sie einige Best Practice) meine App.
Wie ich es verstehe $scope
sollte nur gelesen werden (sah einige Tutorials, wo ich das hörte).
Also, wenn ich App laden, sollte ich service
verwenden, um einige Daten aus der Datenbank zu erhalten und in model
zu speichern.
UPDATE
Gerade jetzt alle Daten, die ich vom Server erhalten werden Controller $ Umfang gespeichert und ich versuche, es zu Diensten zu bewegen und Controller dümmer machen.
Ich überprüfe auch diese article und ich versuche, zweite oder dritte Option zu verwenden, aber immer noch nicht den besten Weg finden, um es zu implementieren.
Das ist mein Service und Controller:Wo in der angularJS App das Modell gespeichert werden soll?
function dataService($http) {
var service = {
getToDoList: getToDoList,
getToDoListByType: getToDoListByType,
getToDoById: getToDoById
};
return service;
function getToDoList() { }
function getToDoListByType() { }
function getToDoById() { }
}
function toDoController($location) {
var vm = this;
vm.todos = [];
vm.title = 'toDoController';
activate();
function activate() {
return getToDos().then(function() {
console.log("ToDos loaded");
});
}
function getToDos() {
return dataservice.getToDoList()
.then(function (data) {
vm.todos = data;
return vm.todos;
});
}
}
Aber in dieser Implementierung Liste zu tun ist, wieder in der Steuerung.
Wo sollte ich diese Liste speichern, nachdem ich sie vom Server bekommen habe und wo sie eingestellt werden sollte (vom Controller oder vom Dienst), damit ich diese Liste im Cache bearbeiten kann (lokal bleiben und gelegentlich aktualisieren)?
Ich komme aus C# Welt und dort habe ich immer Objekte verwendet (z. B. Benutzer, Produkt, Artikel usw.) füllen Sie diese Objekte in einer Schleife und speichern Sie es in einer Liste. Ich kann keinen Weg finden, wie ich diesen Ansatz auch in eckigen verwenden soll, und wenn ja, sollte das nur Dienst mit Eigenschaften sein?
Ich verwende einen Dienst, um die Liste und einen Dienst CRUD-Funktionen zu enthalten. Wenn ich Daten in $scope
von meinem Modell lade, wie später dieser Bereich aktualisiert wird, wenn ein anderer Teil des Codes Daten in meinem Modell ändert?
Die Änderung kann von einem anderen Controller kommen oder zum Beispiel über SignalR aktualisiert werden. Auch als ich hörte, wenn ich Daten auf Sicht aktualisieren, wie $scope
sollte nur gelesen werden muss ich den Dienst aktualisieren und wieder wie und wann $scope
dann aktualisieren?
Es tut mir leid, wenn meine Frage zu noob ist, aber ich wäre dankbar, wenn jemand mir helfen kann, zu verstehen, wo in eckigen zu halten?
Irgendwann muss die ToDo-Liste im Controller sein oder Sie werden nicht in der Lage sein, daran zu binden. Was Sie abstrahieren möchten, sind die Vorgänge, die den Dienst erreichen. Wenn sich die Serverimplementierung ändert, müssen Sie nur den Datendienst und nicht den Controller ändern. Es hilft auch bei Komponententests, da Sie einen gefälschten Datendienst erstellen können, um gefälschte Daten zurückzugeben. Ich mache das gleiche für das Prototyping, bevor ich irgendeinen Servercode schreibe. – nbering
Im Beispiel von Frage habe ich einen Dienst erstellt, den der abstrakte Server aufruft. Ich gebe ein anderes Beispiel: 'Dienst ruft die Liste auf>> Rückkehrliste zum Controller $ scope'>' zeige es auf Ansicht' => aber jetzt in der Ansicht manipuliere ich dieses Array in Elementen, indem ich jedem Element einige Eigenschaften hinzufüge (Gruppierung) , Farben usw.), die ich hinzufügen muss, um diese Daten anzuzeigen. Und sagen wir, dass ich alle diese Eigenschaften wieder ändern möchte (Schleife erneut ausführen), aber ich brauche Originaldaten, die ich vom Server bekommen habe. Aber als ich die Liste an den Controller zurückgegeben habe, habe ich kein Original-Array mehr. – 1110
Und da ich keinen Server-Anruf mehr machen möchte, weiß ich nicht, was gute Praxis ist - wo dieses Modell zu halten ist. – 1110