2013-07-17 8 views
5

AngularJSの複数のソースから$http.getを発射することに関して質問があります。以下のコードは非常に簡単です: 私は$scope.test HTML内の1つのボタンのクリックハンドラである機能を持っています。この$http.getは正常に動作します。 次に、サーバからデータを取得し、基本プリミティブのチャートを作成する$http.getがあります。非常に単純で、これも同様に機能します。そして、すべてのグラフノードにボタンを追加したいと思います。ボタンハンドラでは、別の$http.getコールを実行したいと思います。しかし、これは動作しません!ここで

コードです:

$scope.test = function() { 
    console.log('Klic na ID 1'); 
    $scope.commonController.getData('orgunit/1?jsonDepth=3') 
     .success(function(workpositionData,status,headers,config) { 
      console.log('Klic na ID 1 OK'); 
      $scope.workPositions = workpositionData.workPositions; 
     }).error(function(data,status,headers,config) { 
      commonController.error('Pri branju delovnih mest je prišlo do napake: '+data.description); 
     }); 
}; 


var options = new primitives.orgdiagram.Config();  
var itemB, itemC, itemD, itemE; 
var rootItem = new primitives.orgdiagram.ItemConfig(); 

options.rootItem = rootItem; 
options.cursorItem = rootItem; 
options.hasSelectorCheckbox = primitives.common.Enabled.True; 

var buttons = []; 
buttons.push(new primitives.orgdiagram.ButtonConfig("add", "ui-icon-folder-open", "Add0"));  
options.buttons = buttons; 

options.onButtonClick = function (e, data) { 
    console.log('Klic na ID '+data.context.id); 
    $http.get('proxy/api/orgunit/' + data.context.id + '?jsonDepth=3') 
    .success(function(workpositionData,status,headers,config) { 
     console.log('Klic na ID '+data.context.id + ' OK'); 
     $scope.workPositions = workpositionData.workPositions; 
    }).error(function(data,status,headers,config) { 
     commonController.error('Pri branju delovnih mest je prišlo do napake: '+data.description); 
    });     
}; 

$http.get('proxy/api/orgunit/tree?jsonDepth=2') 
.success(function(orgUnitsData,status,headers,config) { 
    console.log('Reading orgunit tree ok'); 

    rootItem.title = orgUnitsData.orgUnits[0].title; 
    rootItem.description = orgUnitsData.orgUnits[0].description;   
    rootItem.id = orgUnitsData.orgUnits[0].id; 
    rootItem.hasSelectorCheckbox = false; 
    rootItem.image = "http://www.basicprimitives.com/demo/images/photos/a.png"; 

    $scope.addItems(rootItem, orgUnitsData.orgUnits[0].subordinates, 0); 
    jQuery(".basicdiagram").orgDiagram(options); 


}).error(function(data,status,headers,config) { 
    console.log('Reading orgunit not ok'); 
}); 

私は(ディレクティブ、別のテンプレートとコントローラ、...)このチャートを作成するの組み合わせの多くを試みたが、何も働きません。チャートノートのボタンからの$ http.getコールは起動しません(Chome Developer ToolsのNetworkでは何も表示されません)。

しかし、ここではこれをinteresingされています。私はテスト機能別の時間実行すると、私はチャートボタンから$ http.getからテスト機能からの応答を取得する(HTML]ボタンをクリックしてください)。これは、チャートボタンから$ http.get呼び出しが何かを待っているように見え、何かが出現すると、それが発生します。

この問題の解決方法を知っている人はいますか?シナリオテストを実行し、チャートボタンの機能を実行し、テストを実行するためのコンソールの出力は、(太字チャートボタン機能からコンソールエントリであるこのようなもので、テスト関数からnonbolded:

KLIC NA ID 1 KLIC NA ID 1 OK KLIC ID NA 4 KLIC ID NA 1 KLIC ID NA 1 OK KLIC ID 4あなたは私に知らせてくださいこのことについてどんな考えを持っている場合は、この事は狂気のいくつかの最後に私を運転している

OK NA時間。 UPDATE

ここではhttps://github.com/angular/angular.js/issues/2794#issuecomment-18807158の解決策で解決しましたので、$ scopeでコール関数をラップしました。

$scope.$apply(function() { 
    console.log('Klic na ID ' + data.context.id); 
    $scope.commonController.getData('orgunit/' + data.context.id + '?jsonDepth=3') 
    .success(function(workpositionData,status,headers,config) { 
     console.log('Klic na ID ' + data.context.id + ' OK'); 
     $scope.workPositions = workpositionData.workPositions; 
    }).error(function(data,status,headers,config) { 
     commonController.error('Pri branju delovnih mest je prišlo do napake: '+data.description); 
    }); 
}); 
角度1.1.4から始まっ

よろしく

+0

スコープを入れようとすると、$ apply()コードに –

+0

正確には? $ apply()は問題を解決しないと思うのは、問題は$ http.getが起動せず、その結果がUIでrederingされていないということではないからです。 – Sobis

+0

私は質問の更新で狼狽のような意味ですか?はいの場合、あなたはいつも正しかった、私はちょうどあなたが何を意味するのか分からなかった。 – Sobis

答えて

関連する問題