2014-05-16 5 views
0

알려진 작업 방식의 웹 메소드 (.net)를 사용하여 각도 모델을 업데이트하려고합니다.각도로 webmethod를 사용하여 입력 버튼을 클릭했을 때 바인딩을 유지하는 방법

  • 콘솔에 기록 된 내 웹 메소드의 데이터가 정상적으로 복원됩니다.

  • 또한 입력 상자 값을 업데이트합니다.

  • 그러나 내 각형 모델 바인딩은 업데이트되지 않습니다.

내가 뭘 잘못하고 있니?

<input class="btn-primary" /> 
<input class="txtCalls" ng-model="TotalCalls"/> 

각도 HTML

$scope.TotalCalls; 

코드 숨김

아약스 전화

$(document).ready(function() { 
      $('.btn-primary').click(function() { 
       $.ajax({ 
        type: "GET", 
        url: "Stats.aspx/GetCallData", 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        success: function (response) { 
         $('.txtCalls').text(response.d); 
         console.log(response.d); 
        }, 

        failure: function (response) { 
         alert(response.d); 
         console.log(response.d); 
        } 
       }); 
      }); 
+0

BTW [ScriptMethod은 (UseHttpGet = 사실이 끔찍한 연습 – Dalorzo

답변

1

이것은 JQUERY/Ajax 호출이기 때문에 각도 호출이 아닙니다. 당신은 각 컨트롤러에서 전화를 대신 JQuery on('click')ng-click="someMethod()"를 추가해야 $.ajax

당신의 버튼 .btn-primary 대신 $http.get를 사용해야합니다. 마찬가지로 :

$scope.someMethod = function(){ $http.get(...) }; 

또한 각도가 MVVM 프레임 워크이며,이 패턴의 한 부분으로 당신이 업데이트 :

<input class="btn-primary" ng-click="someMethod() /> 

내가 좋아하는 당신이 someMethod를 구현해야합니다 거기에, 그래서 당신이 이미 컨트롤러가 가정 것 모델 (데이터)보기 대신 html>form>input 양방향 바인딩이 나머지 작업을 제어합니다.

0

"외부"각도에서 값을 변경하는 경우 각도 scope에 대한 참조가 필요하고 scope.$apply()으로 전화하십시오.

예를 들어

:

var el = $('.txtCalls').get(0); 
angular.element(el).scope().$apply(); 

을하지만 보통 가능 (같은 $http.get)

+1

을 그것이 GET 호출 전에 – Dalorzo

0

사용 AngularJS와 $ http.post AngularJS와 컨트롤러 또는 서비스 나 내부의 경우 각 제공된 코드/절차를 사용하는 것이 좋습니다 지시문 대신 $ .ajax.

+0

다음과 같은 권장하고있다 – Dalorzo

+0

그럼 그냥 $ http.get를 사용 Y POST를 따라에 BTW도 설명 POST되지 닫는 괄호없는)! angular.js 문서의 모든 내용 : https://docs.angularjs.org/api/ng/service/$http – TchiYuan