JavaScript (Angular) ForEach循环改变不应用
JavaScript (Angular) ForEach Loop Changes Not Applying
我有一个对象数组,其日期格式为MMMM Do YYYY
格式。我需要将其转换为UNIX时间戳来排列它们,然后将它们转换回可读的日期格式。
然而,在这样做的时候。似乎我从forEach
回调内的更改不适用于$scope.lalala
变量。
function compare(a, b) {
if (a.date < b.date)
return -1;
if (a.date > b.date)
return 1;
return 0;
}
$scope.lalala = arrayofincompleteorders;
$scope.lalala.forEach(function(hiVanilla, index) {
hiVanilla.date = moment(hiVanilla.date, 'MMMM Do YYYY').format('x');
if (index == $scope.lalala.length - 1) {
$scope.lalala.sort(compare); timestamps as expected
console.log($scope.lalala); //logs the date property with unix
callback();
}
});
console.log($scope.lalala); //logs the date property with unix timestamps, why?
function callback() {
$scope.lalala.forEach(function(order, index) {
console.log(order.date); //unix timestamp
$scope.lalala[index].date = moment(order.date, 'x').format('MMMM Do YYYY');
console.log($scope.lalala[index].date); //formatted timestamp
});
};
编辑:我有同样的问题,甚至与角度。回调中的forEach循环:
function callback(){
angular.forEach($scope.lalala, function(value, key) {
console.log(value.date);
value.date = moment(value.date, 'x').format('MMMM Do YYYY');
console.log($scope.lalala[key].date);
});
console.log("fire!");
$scope.apply();
};
我得到的日期改变成功,但然后它说,$scope.apply()
不是一个功能,我的脚本的其余部分。
Edit2:
我摆脱了回调,并在一个angular.forEach
中拥有一切,但它仍然不适用?
$scope.lalala = arrayofincompleteorders;
angular.forEach($scope.lalala, function(hiVanilla, key) {
hiVanilla.date = moment(hiVanilla.date, 'MMMM Do YYYY').format('x');
if (key == $scope.lalala.length - 1) {
$scope.lalala.sort(compare); //timestamps as expected
console.log($scope.lalala); //logs the date property with unix
console.log(hiVanilla.date); //unix timestamp
hiVanilla.date = moment(hiVanilla.date, 'x').format('MMMM Do YYYY');
console.log($scope.lalala[key].date); //formatted timestamp
}
});
console.log($scope.lalala); //logs the date property with unix timestamps, why?
看起来我在使用angular.forEach
的方式,它不是设计的。
下面的工作,基本上我只是通过将它压入一个空数组来分配它,而不是试图改变我正在循环的数组:
$scope.lalala=[];
var log = = arrayofincompleteorders;
angular.forEach(log, function(value, key) {
if(value.complete!="TRUE")
{
i++;
value.date = moment(value.date, 'x').format('MMMM Do YYYY');
this.push(value); //put the new value in $scope.lalala as specified below
}
}, $scope.lalala);
相关文章:
- 类似Mac应用商店的按钮改变与Javascript
- 是否在应用程序缓存清单更新时更新所有文件?或者只是改变了的那些
- 如何改变多个单元格值在谷歌表通过应用程序脚本
- windows 8应用程序CSS列表视图改变内联样式
- 聚合物改变应用颜色
- 在Angular和Nodejs应用中,如果我改变了html文件,它也不会更新浏览器
- 一旦页面被点赞,facebook应用程序中的图像就会改变
- 如何改变一个属性的聚合物元素与jquery?(修复加载时应用程序抽屉故障)
- 如何在angular js中应用加载器/旋转器来改变状态
- 当用户想要改变手机方向时,我的应用显示错误的UI.Android
- 改变不透明度属性和应用梯度引导工具提示
- 为什么在我的JQM应用程序中定向改变事件从未被触发
- 使用滑动手势在多页面的jQuery移动应用程序中改变页面
- 如何应用透明的背景,改变颜色顺利
- JavaScript (Angular) ForEach循环改变不应用
- 如何用gulp-bump改变应用程序的主要和次要版本
- 扫描数据到mvc web应用程序,然后改变焦点
- 如何改变掩模的礼服,当点击礼服时应该应用到掩模上
- 谷歌应用脚本正在改变我的数组成字符串.为什么
- Windows 8应用程序- Webview控件(c#).注入JavaScript来改变用户代理字符串