2016-10-10 7 views
0

に変換します。ポストで取り出されたhtmlをコンテナに追加する関数を持つ角度コントローラがあります。私はその中のdivをクリックして、何らかのデータをクリックしてvar結果を設定することができます。

<div onclick="var result = {"some":"data", "right":"here"}... 

問題は、コールバック関数の機能を保持しています。これは私が変換しようとしているものです。

jQuery.post(url, { 
       'callback': "callbackFunctions.setData(result);callbackFunctions.closeDialog();", 
       'return_type' : 'json' 
      }, 
      function (json) { 
       if (json.success) { 
        jQuery('#template').html(json.message); 
       } 
      }, 'json'); 

このスニペットでは、現在、角度コントローラーの外部機能が使用されています。

var callbackFunctions = { 
    closeDialog: function() { 
     angular.element('#template').dialog('close'); 
    }, 

    SetData: function (result) { 
     var scope = angular.element('.variables img:visible').scope().$parent; 

     scope.$apply(function(){ 
      jQuery.extend(true, scope.variables, { 
       url: result.url, 
       name: result.name, 
       thumbnail: result.thumbnail, 
       value: result.url 
      }); 
     }); 
    } 
}; 

これは最もクリーンな解決策ではないと思います。現在、私はちょうどこれを角度の$ httpリクエストに変換し、コールバック関数を動作させるように見えます。理想的にはこれは$ http.postであり、関数を呼び出すときにはコントローラ内にあるので、すでにスコープにアクセスできます。

私はhttpを変更できません。まだ更新されていない他の大部分のサイトで使用されていることをリクエストしています。

+0

'$ http.post(url、data).then(sucessCallback、erro rCallback) ' – Satpal

+0

https://docs.angularjs.org/api/ng/service/$http#post – madalinivascu

+0

私はhtmlをコンテナに入れる方法を知っています。そのコンテナ内の要素をクリックするときにトリガする必要がある関数を追加するにはどうすればよいですか。コールバックを確認してください。jQueryデータにある関数は、私が傾ける部分は機能しません。 –

答えて

0

コントローラ

$http.post(url, data).then(function(response){ 
    $scope.message = response.message; 
}, function(error){ 
    console.log("Error detected : " + error); 
}) 

HTML

<div id="template"> 
    {{message}} 
</div> 

は、私は本当にあなたがAPIのデータで何をしたいのか知らないが、あなたはあなたのhtml内ng-bindまたは{{variable}}を使用することができますそれらを表示する

+0

response.dataはdivコンテナに挿入されるhtmlです。#templateを呼び出すことができます。問題は、コンテナにHTMLを取得していません。 #template内の要素を選択するときに、カスタム関数のトリガーがあります。コンテナ内の要素はvar結果を設定します。私は結果からのデータが必要です。アイテムが選択されたら、コンテナを閉じる必要があります。それは2つの外部機能のためのものです。私はこれらの関数をトリガする必要があり、私はどのように関数をいくつかの方法で渡す必要があり、それらをトリガする必要があるように$ HTTPで作業を取得する方法がわからないのですか? –

+0

質問コードにHTMLコードを追加できますか?私はあなたが欲しいものを理解していない – Weedoze

関連する問題