[英]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.