2016-06-15 4 views
1

현재 노드, 각도, 표현식, html 환경에 있습니다. 이 텍스트 영역을 문자 형식의 텍스트 데이터로 채우는 데 사용하는 수많은 버튼이 있습니다. 지금같은 각도 컨트롤러에서 한 함수에서 다른 함수로 JSON 데이터 주입

$(function() { 
$('#button1').on('click', function() { 
$('#flyer-description').load("/assets/clientwelcome.txt"); 
}); 
    }); 

내가 텍스트를 가져올 수 있지만 내가 JSON을 가져올 것 : 여기 <td><button id="button1">Client Welcome</button></td> 은 JS의 조각 20에서이 1 개 버튼에 해당하는 것입니다 : 여기

<div class="form-group"> 
<label class="control-label" for="flyer description">Description</label> 
    <textarea style="height:400px" class="form-control" id="flyer-description"></textarea> 
</div> 

내 버튼입니다 데이터를 입력하면 {{client.name}}이라는 텍스트가 호출 될 때 ClientCtrl (각도 컨트롤러)과 내 모듈이있는 상태에서 특정 클라이언트의 이름으로 바뀝니다. 누구든지 어떤 제안이 있습니까?

답변

0

당신과 같이 데이터를 가져오고 비동기를 반환하는 $http를 사용할 수 있습니다

$http.get('dir/wherever/your/data/is/data.json').then(
     function (response) { 
      //success 
      vm.buttonData = response; 
     }, 
     function (response) { 
      //fail 
      console.log("error"); 
     } 
    ); 

당신은 당신이 각도 환경에있는 경우에 대한 $http 여기 https://docs.angularjs.org/api/ng/service/$http

+0

를 해결하기 위해'$의 q'를 사용하여'$ http' 안티 패턴은 . '$ http'는 이미 약속 자체를 반환합니다. 그냥'$ http'를 반환하고'$ q'을 없애십시오. – charlietfl

+0

당신은 완전히 옳았습니다. 저는 이전 연구에서 벗어나 큰 그림을 그리지 못했습니다. 내 게시물을 수정합니다. –

1

, 당신이 원하는 것 읽을 수 있습니다 사용중인 패턴을 조정하십시오. 귀하의 경우에는 매우 jQuery이고 Angular가 아닙니다.

<div class="form-group"> 
    <label class="control-label" for="flyer description">Description</label> 
    <textarea style="height:400px" class="form-control" id="flyer-description" ng-model="flyerdescription"></textarea> 
<div> 

<td><button id="button1" ng-click="loadFlyer()">Client Welcome</button></td> 

과로 자바 스크립트를 수정 : 다음과 같은 조정하여이 문제를 해결할 수

angular.module('<yourangularappname>').controller('ClientCtrl', function($scope, $http){ 
    $scope.loadFlyer = function() { 
     $http.get("/assets/clientwelcome.txt").then(function(res){ 
      $scope.flyerdescription = res.data; 
     }); 
    }); 
}); 
+0

귀하의 코드는 제가 말하고있는 내용이 매우 뛰어납니다. 그러나 $ scope.clients의 데이터를 주입해야 텍스트에 클라이언트 정보를 가질 수 있습니다. 전단계 기능에이 데이터 (이전에 http.get로 가져옴)를 어떻게 주입합니까? –

+0

동일한 컨트롤러, 서비스를 사용해야합니까? –

+0

올바르게 이해했다면 위의 코드를 $ scope.flyerdescription에서 $ scope.clients로 변경하여 $ scope.clients가 파일에서 데이터를 가져 오도록 할 수 있습니다. ng-model 부분을 ng-model = "clients"로 업데이트하려고합니다. ng-model은 자바 스크립트 코드와 HTML간에 데이터를 바인딩하는 데 사용하는 메커니즘입니다. 이 바이올린을 확인하십시오. https://jsfiddle.net/jw7ejbdw/에 대한 바인딩/주입 개념을 명확히해야합니다. Angular는 모두 양방향 데이터 바인딩입니다. "마술처럼"당신의 자바 스크립트와 HTML이 동기화됩니다. – andrewkodesgood

관련 문제