Auf der Suche nach dem "besten" Weg zum Aufbau einer Angular App habe ich mehrere Best-Practice-Artikel gefunden. Mit diesem Eingang habe ich dies:Trennung der DOM-Manipulation von eckigen Controllern - Best Practice gesucht
angular.module('xApp', [])
//..... some services, factories, controllers, ....
.directive('dirNotification',[ function dirNotification() {
return {
scope: {},
templateUrl: 'xNotification.html',
replace: true,
controller: 'CtrlNotification',
link: function($scope){
// if this is 'DOM manipulation, should be done here ... ?
/*
$scope.$on('session.update',function(event, args) {
if (args == null) {
$scope.notificationdata.username = "";
$scope.notificationdata.sid = "";
} else {
$scope.notificationdata.username = args.username;
$scope.notificationdata.sid = args.accessToken;
}
});
*/
}
};
}])
.controller('CtrlNotification',['$scope' ,function CtrlNotification($scope) {
$scope.notificationdata = {
username: "",
sid: ""
};
// this is not real DOM manipulation, but only view data manipulation?
$scope.$on('session.update',function(event, args) {
if (args == null) {
$scope.notificationdata.username = "";
$scope.notificationdata.sid = "";
} else {
$scope.notificationdata.username = args.username;
$scope.notificationdata.sid = args.accessToken;
}
});
}])
Die HTML-Vorlage ist einfach:
<div>
<p>{{notificationdata.username}}</p>
<p>{{notificationdata.sid}}</p>
</div>
Also meine Frage ist, sollten Datenänderungen als DOM-Manipulation in Betracht gezogen werden? Die vorliegende Version, die dies innerhalb des Controllers macht, erscheint mir praktischer (z. B. das Setzen von Standardwerten). Wenn ich weitere Funktionen hinzufüge, wird der Block "directive link" erweitert und enthält mehr Funktionen als Definitionen. Ich denke, innerhalb der Direktive sollten Dinge wie das Ändern von Farben oder das Ausblenden von Elementen in Abhängigkeit von den Scope-Daten dort gemacht werden.
Was bedeutet die Gemeinschaft? Stimmen Sie meinen Annahmen zu?
Danke, Rainer
Vielen Dank! Die ViewModel-Idee macht es in der Tat viel klarer. Lassen Sie mich ein wenig mehr lesen und spielen Sie mit Ihren Hinweisen für den Moment. – Rainer
@Rainer, habe ich Ihre Frage adressiert? –
Definitiv, nochmals vielen Dank! Entschuldigung, hoffentlich kann ich bald jeden Tag mit Angular arbeiten, momentan leider nicht. – Rainer