저는 Angular와 MV * (Ruby on Rails를 여러 해 동안 다른 개발자들이 사용하는 것을 보면서 얻은 것의 짧은 것)에서 매우 새롭습니다. 그래서 아마 순진한 질문을 용서해주십시오.AngularJS에서 컨트롤러로 모델을 확장 할 수 있습니까?
사용자가 거리 주소를 입력하고 Google 지오 코딩 API에서 실시간 제안을 얻을 수있는 대표 입력 필드를 설정하려고합니다. 나는 UI 부트 스트랩에서이 예 (중간 필드에 "비동기 결과"예를 들어)를 그대로 시작 :
http://angular-ui.github.io/bootstrap/#/typeahead
그것은 로컬 작업,하지만 지금은 주소의 기타 관련 정보를 수집하기 위해 그것을 확장 할 다른 양식 데이터와 함께 제출하십시오. 예를 들어 Geocoding API가 결과에 address_components
(example here)의 country
유형을 반환하면 해당 데이터를 서버에 POST하는 양식 데이터에 추가하고 싶습니다. 지오 코딩 API에 의해 반환에만 formatted_address
속성은 ui.bootstrap.typeahead
지침대로 양식을 제출, 현재
을 (를 어떻게/내가 캡처해야하지만이 좋은 출발점이 무엇 속성. 다른 논리가있을 것이다) typeahead 지시문의 <input>
에 ng-model
을 사용하여 바인딩합니다.
- 나는 처음부터 시작한다면 (즉, UI 부트 스트랩에서 만든 설계/구현 결정에 바인딩되지 않은 :
그래서, 내 질문은 (그러나 별도 중 하나를 해결 주시기 바랍니다) 두 가지이다), 이것을 구현하는 가장 "각도적인"방법은 무엇일까요? 지시문이 모든 값에 대해
ng-model
으로 바인드 된<input>
을 생성해야합니까? 일 수도 있고 컨트롤러가 사용할 수있는 것으로 채우기를 처리 할 수 있습니까? - 처음부터 시작하지 않으므로이 기능을 제공하기 위해 기존 코드를 보완하는 합리적인 방법은 무엇입니까? 기존 지침에 기능을 추가 할 수있는 방법이 있습니까? 이 동작은 컨트롤러에 속한 것입니까, 아니면 서비스로 추상화하는 것이 좋을까요? 아니면 내가 이것을 overthinking 오전 - 내가 생각하지 않은 간단하거나 더 나은 방법이 있습니까? UI 부트 스트랩 예제에 따르면이 코드를 넣으려는 유일한 장소는 내의
.then()
에 전달 된 success 함수에 있으며 여기에서는$http
응답을 처리하지만 이상적인 것은 아니라고합니다. 거기서 일하는 것이 상상할 수있는 것은 내가 만들고있는 양식 값 객체 (즉, 양식 제출시 POST 할 객체)에 속성을 추가하는 것입니다. 그런 다음이 속성의 이름을 알아야합니다. 이제 내 컨트롤러는 다음과 같습니다. 그것이 사용되는 형태에 너무 가깝게 묶여있다.
미리 도움을 청하십시오. 나는 이것이 의미가 있기를 바랍니다. 필자는 여전히 기본 개념을 파악하고 있으므로 유사한 코드를 사용하는 기존 코드를 지적하거나 특정 문서 나 통찰력을 제공 할 수있는 기사를 참조 할 수 있다면 특히 유용 할 것입니다.
많은 감사! 도움이됩니다. 따라서 내 서비스에서 지오 코딩 API 결과 (예 : 국가)를 선행 작업 컨트롤러로 반환하면 어떻게 게시 할 수 있도록 양식 컨트롤러 (선행 작업을 감싸는)에서 사용할 수있게 할 수 있습니까? 양식을 제출 하시겠습니까? FWIW, 나는 POST Body에 대해 직렬화 할 객체를 제공 할 수있는 Restangular를 사용하고 있습니다. 그것이 제가 필요하다고 가정하는 객체입니다. 그러나 컨트롤러가 특정 속성을 추가하면 다른 형태로 재사용 할 수 없습니다. 더 나은 이해를 위해 코드 예제를보아야하는지 알려주세요. – Bungle
좀더 일반적으로 말하자면 - 내가 컨트롤러(FormCtrl이라고 부름)을 가지고 있고, 의 값을 기반으로 폼과 함께 제출할 몇 가지 추가 값을 생성하는 다른 컨트롤러를 랩핑합니다 (InputCtrl), InputCtrl이 해당 데이터를 제공하기 위해 FormCtrl의 특성을 알 필요가없는 방식으로 그렇게 할 수 있습니까? 그렇다면 어떻게? 즉, InputCtrl이 FormCtrl에 "나는 당신을 위해 추가 데이터를 가지고 있습니다."라고 말하면서 FormCtrl은 "고마워, 어디에 넣을 지 안다"라고 말할 수 있습니까? – Bungle
컨트롤러는 서비스를 통해 또는 스코프에서 노출 된 (상속 된) 객체를 통해 그들 자신을 "말합니다". 양식 관리자는 양식 제출 (예 :'ng-submit')을 처리하는 데 필요한 모든 정보 **를 보유해야합니다. 양식이 포함 된 ''요소에 데이터를 제출하는 고전 HTML/자바 스크립트 관점에서 생각하고 있다고 생각합니다. Angular를 사용하면 컨트롤러에는 ViewModel 만 있고 필요한 객체가 ''또는 다른 방법으로 설정되었는지는 상관하지 않습니다. –