2016-06-15 4 views
1

現在、ノード、角、明示、html環境にいます。 私は、このテキストエリアに文字用の書式付きテキストデータを入力するために使用する多数のボタンがあります。ここでJSONデータを同じ角度のコントローラ内のある関数から別の関数に注入

<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> 

は私のボタンである。ここでは <td><button id="button1">Client Welcome</button></td> 20のうち、この1つのボタンに対応するJSの抜粋です:

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

、私はテキストをインポートしている間、私はJSONをインポートしたいですデータで、テキストが{{client.name}}を呼び出すときに、ClientCtrl(角度コントローラ)と私のモジュールが存在すると、特定のクライアントの名前に変更されます。誰にも何か提案はありますか?あなたはアンギュラ環境にある場合は、あなたがしたいと思うでしょう

$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

あなたはそうのように、データをフェッチし、非同期的にそれを返すために$httpを使用することができます使用しているパターンを調整します。あなたの場合、それらは非常に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> 

とにあなたのjavascriptを変更する:: `$ http`を解決するために、` $ q`を使用して

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

がアンチパターンであるあなたが次のことを調整することによって修正することができます。 '$ http'は既に約束を返します。 '$ http'を返して' $ q'を取り除く – charlietfl

+0

あなたは完全に正しいです、私は以前の仕事から私の本質を逸脱しようとしていました。私は自分の投稿を編集します。 –

1

を読むことができます:

+0

あなたのコードは、私が話していることに関して非常に優れていますが、$ scope.clientsからデータを注入する必要がありますので、テキストにクライアント情報を入れることができます。このデータ(以前はhttp.getによって取得されたもの)をフライヤー機能にどのように注入するのですか? –

+0

同じコントローラ、まだサービスを使用する必要がありますか? –

+0

私が正しく理解していれば、上記のコードを$ scope.flyerdescriptionから$ scope.clientsに変更して、$ scope.clientsがファイルからデータを取得するようにします。 ng-model部分をng-model = "clients"に更新する必要があります。 ng-modelは、JavaScriptコードとHTMLの間でデータをバインドするために使用するメカニズムです。このフィドルをチェックすると、https://jsfiddle.net/jw7ejbdw/のバインディング/注入概念が明確になるはずです。 Angularは、双方向のデータバインディングです.JavaScriptとHTMLは同期しています。 – andrewkodesgood

関連する問題