우리는 하나의 엔터프라이즈 응용 프로그램을 개발했습니다. 완전한 클라이언트 측 프레임 워크는 AngularJS를 기반으로하며 서버 측 프레임 워크는 ASP.NET 웹 API에 있습니다. 이 애플리케이션에는 350 개 이상의 html 페이지와 250 개 이상의 웹 API가 있습니다. ng-init 지시어에서 서버 데이터를 호출하는 컨트롤러 기능을 통해 초기화하는 영역이 많이 있습니다. 우리의 응용 프로그램에서 모든 데이터가 ASP.NET 웹 API에서 나오기 때문에. 그러나 ng-init에 대한 설명은 다음과 같습니다.각도 컨트롤러 기능 호출을 통해 ng-init 지시문에서 서버 데이터를 초기화 하시겠습니까?
아래의 데모에서와 같이 ngRepeat의 별칭 속성에 대한 ngInit의 적절한 사용 방법. 이 경우 외에 ngInit 대신 컨트롤러를 사용하여 범위의 값을 초기화해야합니다.
필자는 업계 전문가/Angularjs 핵심 팀 구성원으로부터 내 의견에 대한 의견을 듣고 싶습니다.
우리가 업계의 HTML 페이지를로드하고 서버 데이터를 표시하는 산업 목록을 표시하기 위해 먼저 애플리케이션에서 수행중인 것을 간략하게 설명합니다. HTML 템플릿 코드는 다음과 같습니다.
<div ng-init="initIndustries()">....</div>
"initIndustries"함수는 초기화 된 industryCtrl에서 호출됩니다. industryCtrl.js 코드는 다음과 같습니다 : 아래에 언급되어 Angularjs Doc 및 Anglarjs-styleguide guideline on Keep Controller Focused에 따라
app.controller("industryCtrl",["$scope",function($scope){
//Sets the server data in the $scope property.
$scope.initIndustries = function(){
//perform ajax request and set the data into the $scope property.
}
$scope.initAddIndustry = function(){
// perform ajax request for getting a dropdown data on Add Industry Page.
}
}])
내가 가지고있는 몇 가지 문제를 :
- 우리는 모든 데이터가 있기 때문에 기능을 통해 데이터를 초기화 할 수 뭔가 잘못하고 있습니까 서버 API에서 오는?
- 현재 초기화 방법은 AngularJS 기반 응용 프로그램의 업계 관례에 위배됩니다. 그렇다면 어떤 접근 방식을 적용해야합니까?
- anglejs-styleguide에 따라 클라이언트 측 테스트 커버리지를 흔들기 위해서 모든 뷰에 대해 적절한 컨트롤러를 만들어야합니까?
위의 접근 방식을 (ng를-초기화 지시자를 통해 컨트롤러 기능의 데이터를 초기화), 구현하는 이유 때문에 많은 응용 프로그램에 내 초기 생각은 우려의 코드와 분리 디커플링의 MVC 철학을 따르도록했다.
감사합니다. Umair, 귀하의 답변에 따라 몇 가지 우려 사항이 있습니다. 1. 초기화가 발생하지 않으면 컨트롤러에서 가비지 값이 유지되는 방식. 입력 내용을 상세하게 기재 해 주시겠습니까? 2. 내 질문 포인트 3을 이해하지 못했다고 생각합니다. 누구든지 내 의견에 대해 자신의 의견을 말하면 좋을 것입니다. – Ajay
포인트 1 : 귀하의보기를 찾을 수 없다면이 라인
내보기를 찾을 수없는 경우 내 컨트롤러가 해당보기에 대해 초기화되지 않았습니다. 모든 상황에서 내 initIndustries 함수는 HTML 또는 컨트롤러를 통해 호출하여 케이스를 호출하지 않으며 내 아약스 요청은 확실히 수행되지 않습니다. 당신의 제안은 내 관심사를 해결하지 못합니다 (포인트 1과 포인트 2). – Ajay