我在我的控制器检查一天,然后取决于它是什么时间的功能,将我的对象的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