これは AngularJS アプリ用です。サービスに依存するカスタム ディレクティブがあります。
私が本当に興味を持っているのは、モデルと DOM の両方に影響を与えるユーザー アクションに対処するための「角度のある方法」です。いくつかのコード例:
HTML:
<form foo-places>
<!--other stuff -->
<span ng-repeat="place in places">
<button ng-click="removePlace(place)">remove {{place}}</button>
</span>
</form>
JS:
angular.module('foo.directives', []).directive('fooPlaces',
function(placesService) {
return {
controller : function($scope) {
$scope.places = placesService.places;
$scope.removePlace = function(name) {
placesService.removePlace(name);
};
$scope.$on('placesChanged', function() {
$scope.places = placesService.places;
});
},
link : function($scope, element, attrs) {
//code to do stuff when user removes a place
}
}
})
ユーザーが (ボタンをクリックして) 場所を削除すると、DOM をいじる必要もあります。たとえば、ウィンドウを一番上にスクロールするなどです。モデルと、DOM を実行するディレクティブ内の別の関数...ただし、両方とも同じユーザー アクションに基づいています。
私はこれを考えすぎていますか、それとも本当に何かが欠けていますか? モデルと DOM の両方を扱う単一のユーザー アクションをどのように処理すればよいですか?