簡體   English   中英

如何將內部查詢結果從service.js綁定到Angular.js指令中的外部變量?

[英]How do bind inner query results from service.js to outer variable in Angular.js directive?

使用角度種子項目:在directives.js中

var names = [];
Animals.query(function(data){ // Animals.query() from service.js
  console.log(data.Names); // output > [Object, Object..., Object]  
  names = data.Names; // attempt to bind to outer variable
});
console.log(names); // output > []

我可以在此處看到數據,但我需要在函數外部。 如何在功能之外獲取它? console.log(names); 發生在console.log(data.Names);之前 我知道它與閉包以及可能的回調有關,我已經嘗試了很多事情,但是我似乎無法讓它們適合我的情況。 我最終遇到了一個不斷擴大的混亂局面,這些混亂局面包裝在回調函數中,而回調函數包裝在仍未綁定外部變量的情況下。 我不想“污染全局名稱空間”,但是我需要內部函數之外的數據。 最終目的是使數據可用於d3.js處理。 必須有一個更簡單的方法。 有人可以幫我解決這個特殊情況嗎?

希望我不會誤會您:您已經創建(我假設)一個函數Animals即服務。 您為什么不將其注入指令范圍的控制器中?

如:

function Controller($scope, Animals){
  $scope.names = [];
  $scope.updateD3viz = function(){
    // do your d3 stuff here
    $scope.names = Animals.query(); // or whatever
  }
}

$scope將可以從指令的link(scope,elem,attrs)方法訪問。

我不得不做類似的事情(angular和d3),最終我得到了d3圖作為控制器的scope屬性,以確保它被包含在angular的生命周期中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM