2015-04-23 28 views
0

我有一個控制器,它初始化我的價值,例如:變量的範圍不守值的函數改變

$scope.showThing=true; 

我切換與價值NG單擊樣

ng-click="showThing=!showThing" 

這工作正常,但如果我嘗試在控制器內部的函數中使用相同的值,則表現爲非理性,至少可以說。 只要提醒間隔函數中的值,只需在第一次更改值後迭代即可獲得正確的值,有時甚至不會。 由於這是微不足道的東西,我不想爲此創建一個工廠,所以我希望有人能告訴我我在這裏做錯了什麼。

+1

可以請你出示你的控制器的代碼嗎? – Hinrich

+0

$ scope.showThing = true; \t \t $ scope.displayTr = function(){ \t \t \t alert($ scope.showThing); \t \t}; \t \t $間隔(函數(){ \t \t \t //取得從工廠 \t \t \t \t。然後(功能(響應){數據 \t \t \t \t \t如果(response.status === 200) { \t \t \t \t \t \t $ scope.info = response.data; \t \t \t其他{ \t \t \t \t \t \t console.log('Error occured'+ response.status); \t \t \t \t \t} \t \t \t \t}); \t \t \t $ scope.displayTr(); ),5000); –

+1

順便說一句,最好用格式化的代碼更新你的原始問題,而不是在評論中粘貼代碼 – Hinrich

回答

0

你的問題並不簡單,你可以發佈代碼。這是吊裝問題。

var a = 10; 
console.log("value of 'a' before hoisting: "+a); 
(function(){ 
console.log("value of 'a' after hoisting: "+a); 
var a; 
})(); 

Result: 
value of 'a' before hoisting: 10 
value of 'a' after hoisting: undefined 
+0

我認爲情況並非如此。我沒有得到任何未定義的變量。 –

0

這可能是,因爲間隔一次啓動,然後只是一遍又一遍地返回相同的值。嘗試類似的東西,與吸氣式風格功能相關:

$scope.showThing=true; 

var getShowThing = function() { 
    return $scope.showThing; 
}; 

$scope.displayTr=function(){ 
    alert(getShowThing()); 
}; 

$interval(function() { 
    //get data from a factory .then(function(response) { 
    if (response.status === 200) { 
     $scope.info = response.data; 
    } else { 
     console.log('Error occured' + response.status); 
    } 
    }); 
    $scope.displayTr(); 
}, 5000); 

希望這會有所幫助。