我在我的控制器檢查一天,然後取決於它是什麼時間的功能,將我的對象的isOpen屬性切換爲true或false。我拉着這樣的對象angularJS訪問對象屬性在功能不工作
$http.get('js/data.json').success(function(data) {
$scope.locations = data;
});
這裏是我試圖改變它的地方。 (我會省略我設置的變量以節省空間)
$scope.checkStatus = function($scope) {
switch(day) {
case 0: $scope.locations[0].isOpen = false;
break;
case 1:
case 2:
case 3:
case 4:
case 5: if(time >= $730am && time < $9pm) {
$scope.locations[0].isOpen = true;
} else {
$scope.locations[0].isOpen = false;
};
break;
case 6: if(time >= $11am && time < $9pm) {
$scope.locations[0].isOpen = true;
} else {
$scope.locations[0].isOpen = false;
};
break;
default: alert("default");
};
switch(day) {
case 0: $scope.locations[0].isOpen = false;
break;
case 1:
case 2:
case 3:
case 4:
case 5: if(time >= $8am && time < $8pm) {
$scope.locations[1].isOpen = true;
} else {
$scope.locations[1].isOpen = false;
};
break;
case 6: if(time >= $11am && time < $10pm) {
$scope.locations[1].isOpen = true;
} else {
$scope.locations[1].isOpen = false;
};
break;
default: alert("default");
};
};
等等其餘的位置。
這給我錯誤「無法讀取未定義的屬性'位置」。但是,當我測試$ http.get成功函數中的$ scope.locations [0] .isOpen時,它正確顯示了我的屬性。
所以我真的有兩個問題:如何訪問checkStatus函數內的那個對象?這是做這件事的最好方法嗎?有沒有想過的一些更簡單的方法?
編輯:
我把它去除的checkStatus()函數,只是放置$ http.get成功函數內部的switch語句工作。它現在看起來像這樣。我不確定這是否是最佳做法,但似乎是功能性的。
myApp.controller('MyController', function MyController($scope, $window, $http) {
$http.get('js/data.json').success(function(data) {
$scope.locations = data;
// variables omitted to save space
switch(day) {
case 0: $scope.locations[0].isOpen = false;
break;
case 1:
case 2:
case 3:
case 4:
case 5: if(time >= $730am && time < $9pm) {
$scope.locations[0].isOpen = true;
} else {
$scope.locations[0].isOpen = false;
};
break;
case 6: if(time >= $11am && time < $9pm) {
$scope.locations[0].isOpen = true;
} else {
$scope.locations[0].isOpen = false;
};
break;
default: alert("default");
}
});
我曾經這樣做過,我添加了$ scope以查看是否可以修復它。 – user2407400 2015-03-13 16:42:49
啊,我明白了。那麼你確定'$ scope'是在'$ http'成功後調用'$ scope.locations = data;'時定義的嗎? – 2015-03-13 16:47:32