나는 각도 방법을 통해 작업을하고 있으며 현재 지시어의 올바른 사용법을 이해하려고 노력하고 있습니다. 앱의 전반적인 생태계와 관련이 있습니다. 현재 편집 가능한 요소가있는 폼의 기본 로직을 처리하고 폼의 상태를 변경하거나 취소하는 버튼을 취소/저장하려고합니다.AngularJS : 지시어, 컨트롤러, 템플릿 분리 사이의 적절한 상호 작용
다음은 현재 작동하고있는 작업입니다. 슬림 템플릿과 CoffeeScript를 사용하고 있으므로 일반 HTML 및 JS로 정리하려고합니다. 따라서 앱이 깨지는 문법 오류는이 게시물의 오타로 인해 발생한다고 가정하십시오.
# excerpt of the template
<div my-form ng-repeat="band in bands">
<div class="band-name">
{{band.name}}
</div>
<div class="edit-band" ng-click="editBand(band)">
Click to edit
</div>
<div ng-if="editingBand != band">
{{band.tagline}}
</div>
<div ng-if="editingBand == band">
<form class="form-horizontal" ng-submit="updateBand(band)">
<input type="text" ng-model="band.tagline" />
<input class="btn btn-default" type="submit" />
</form>
</div>
<div ng-if="uncommitedChanges">
<button ng-click="saveChanges()">Save</button>
<button ng-click="cancelChanges()">Cancel</button
</div>
</div>
---------------excerpt of controller
# during init
$scope.bands = bands;
$scope.originalBands = angular.copy(bands);
$scope.uncommittedChanges = false
$scope.editBand = function(band) {
$scope.editingBand = band;
}
$scope.updateBand = function(band) {
$scope.editingBand = null;
$scope.uncommittedChanges = true;
}
$scope.cancelChanges = function(){
$scope.bands = angular.copy($scope.originalBands);
$scope.uncommittedChanges = false
}
$scope.saveChanges = function(){
$scope.uncommittedChanges = true;
// bands are sent to the service that performs the update against the API
}
다시 말하지만,이 모든 작업이 적절하게 수행되지만 적절하게 수행됩니까? 나는이 논리가 많은 재사용 성이 있기 때문에 지시문으로 분리되어야한다고 생각하지만, 어떻게 시작 해야할지에 대해서는 조금 불명확하다. 그 문제에 관해서는, 나는 직감이 옳다는 것에 대해 긍정적이지 않습니다. 지도 정말 감사하겠습니다.
지시문 논리는 지시문에 있어야하며 BandFormController에는 없어야합니다. 지시어의 주요 목적 - 재사용 가능. 이는 컨트롤러와 뷰와 독립적이라는 것을 의미합니다 (가능한 한 의존성으로 만 서비스가 있음). –
이것은 모두 격리되어 있기 때문에 재사용 할 수 있습니다. 이 컨트롤러는 다른 것에 의해 공유되지 않으며,이 지시어에 의해서만 호출되며 지시어에 의해 그 범위가 제공됩니다. 별도의 파일 또는 지시문 자체에 존재하는지 여부는 중요하지 않습니다. – subvertallchris
지시문 전용 컨트롤러를 사용하는 것은 꽤 일반적인 것처럼 보일 수 있지만 대안을 설명하는 리소스가 있거나이를 수행하지 않는 이유가 있다면 기꺼이 읽을 수 있습니다. 나는 아무것도 찾지 못했다. – subvertallchris