2014-07-08 1 views
2

AngularJS 사용자가 팝업에서 그리드의 값을 선택하고 선택한 값이 컨테이너 페이지의 텍스트 상자에 표시되는 시나리오가 있습니다. 사용자가 값을 선택하면 팝업이 컨테이너 페이지에 캡처 된 이벤트를 발생시킵니다. 이제 .val()을 사용하여 텍스트 상자의 값을 설정할 수 있지만 어떻게 모델을 업데이트합니까? 이 텍스트 상자를 유의하시기 바랍니다동적으로 업데이트 한 후의 범위 값 업데이트 텍스트 상자

<input type="text" value="" id="ServiceManagerglookup" ng-model="Model.Person2.Name" /> 
<label id="ServiceManagerglookup_inlinelbl" ng-model="Model.Person2.Name">ABC</label> 

는, 예를 들어 범위에서 임의의 필드에 바인딩 할 수 있습니다 여기에

$scope.$on('rowSelectedInPopup', function (event: ng.IAngularEvent, ...data) { 
    if (elementId === data[1].toString()) { 
     $(elementId).val(data[0].toString()); 
     $(elementId + "_inlinelbl").html(data[0].toString()); 
    } 
}); 

내 텍스트 상자 및 레이블 HTML입니다 값이이 입력 청취자의 트리거링이

$scope.$on('rowSelectedInPopup', function (event: ng.IAngularEvent, ...data) { 
    if (elementId === data[1].toString()) { 
     $(elementId).val(data[0].toString()); 
     $(elementId + "_inlinelbl").html(data[0].toString()); 
     $(elementId).trigger('input'); 
    } 
}); 

처럼

$(elementId).trigger('input');

를 사용하여 변경할 것을 당신은 또한 각도 알릴 필요 값을 변경 게다가 Model.AVC.XYZ.LMN

+0

오해하면 죄송 합니다만; 양방향 바인딩은 Angular의 주요 기능 중 하나임을 기억하십시오.보기를 변경하는 대신 모델을 간단히 변경하면 데이터가 자동으로 업데이트됩니다. 그래서 컨트롤러를 통해 간단하게'$ scope.Model.Person2.Name = html (data [0] .toString())'을 설정하십시오. 'ng-model = "Model.Person2.Name"'을 가진 입력 요소가 단순히 갱신 될 것입니다. –

+0

안녕하세요, 답장을 보내 주셔서 감사합니다. 문제는 다른 곳에서 컨트롤을 사용할 수 있고 다른 필드에 바인딩 할 수 있기 때문에 Model.Person2.Name도 동적이라는 것입니다. 그래서 나는 모든 스크린으로 바뀔 수있는 스코프 [ "Model"[ "Person2"] [ "Name"] 같은 것을해야합니다. 그래서 올바른 질문은 "Model.Person2.Name 또는 Model.ABC.XYZ.PQR과 같은 문자열이있는 경우 범위의 값을 어떻게 업데이트 할 수 있습니까?" – Haris

+0

나는 볼 수 있습니다. 다른 솔루션은 생각할 수 없습니다. 단순히 상기 문자열을 분할하는 것; '$ array.array [0] .array [1] .array [2] .array [3] = html (data [0] .toString())'var array = string.split ('.')')'정확하게 좋은 솔루션은 아니지만, 그럼에도 불구하고 –

답변

1

일반적으로 브라우저에서 수행되므로 모델을 직접 변경하면 이벤트를 트리거해야합니다.

+0

안녕하세요,이 텍스트 상자에서 작동하지만 숨겨진 필드와 동일한 작업을 시도했지만 작동하지 않습니다. 요구 사항은 같지만 숨겨진 필드가 있습니다. .trigger ('input')의 입력 내용은 무엇입니까? 나는 우리가 발사 할 사건의 이름을 명기해야한다는 것을 읽었고 사건은 사건 이름이 아니다. – Haris

+0

.trigger ('input')는 이벤트 이름입니다. 숨겨진 필드에 대해'$ (elementId) .triggerHandler ("change"); 시도 할 수 있습니다. –

+0

예, 시도했지만 범위의 값이 업데이트되지 않았습니다. 이것을 다음과 같이 시도 : angular.element (hdnElement.selector) .triggerHandler ('change'); hdnElement.trigger ('change'); – Haris