Próba znalezienia "najlepszego" sposobu budowania aplikacji kątowej Znalazłem kilka artykułów z najlepszymi praktykami. Z tego wejścia Zrobiłem to:Oddzielanie manipulacji DOM od kontrolerów Angular - wymagane najlepsze praktyki
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;
}
});
}])
Szablon HTML jest po prostu tak:
<div>
<p>{{notificationdata.username}}</p>
<p>{{notificationdata.sid}}</p>
</div>
Więc moje pytanie brzmi, zmiany danych powinny być uznane za manipulację DOM? Obecna wersja robiąca to w kontrolerze wydaje mi się bardziej praktyczna (na przykład ustawienie wartości domyślnych). Ponadto, jeśli dodaję do tego większą funkcjonalność, blok "link do dyrektywy" będzie rósł i będzie zawierał więcej funkcji niż definicji. Sądzę, że w dyrektywie należy wprowadzić takie zmiany, jak zmiana kolorów lub ukrywanie elementów w zależności od zakresu danych.
Co oznacza wspólnota? Czy zgadzasz się z moimi założeniami?
Dzięki Rainer
Dziękuję bardzo! Idea ViewModel sprawia, że jest ona znacznie wyraźniejsza. Pozwól mi przeczytać trochę więcej i baw się z twoimi wskazówkami w tej chwili. – Rainer
@Rainer, czy skierowałem twoje pytanie? –
Zdecydowanie, jeszcze raz dziękuję! Przepraszam, mam nadzieję, że będę mógł pracować każdego dnia z Angular wkrótce, ale niestety nie. – Rainer