javascript - ng-repeat 的意外结果

标签 javascript angularjs angularjs-ng-repeat

我需要为投票应用程序创建一个图表,请参见下图。

它工作得很好,但是在制作具有扩展宽度和降低不透明度的条形时会出现意外的行为。它们是通过“0-4”或“5到9”范围内每个结果的总和来计算的。

给定这个示例集,我希望得到比 ng-repeat 产生的另一个结果。

{"0":2,"5":4,"10":0,"15":2,"20":1,"25":1,"30":1,"35":0,"40":0,"45":0,"50":0,"55":1,"60":0,"65":0,"70":0,"75":1,"80":7,"85":10,"90":3,"95":0}

这个 fiddle 显示了问题:https://jsfiddle.net/r9usr4g1/2/并比较实际结果和预期结果。

你能解释一下我的错误和解决方案吗?

亲切的问候, 帕特里克

results by percent

最佳答案

正如我在评论中提到的:这里的问题是 JS 对象键默认按字母顺序排序

为了避免这种情况发生,您可以使用过滤器。我使用 toArray 过滤器更新了您的 jsfiddle。

myApp.filter('toArray', function () {

return function (obj) {
    console.log(obj)
    if (!(obj instanceof Object)) {
        return obj;
    }
    var result = [];
    angular.forEach(obj, function(obj, key) {
        obj.$key = key;
        result.push(obj);
    });
    return result;
  }
});

UPDATED JSFIDDLE

关于javascript - ng-repeat 的意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30394430/

相关文章:

javascript - 仅执行一次的事件处理程序

javascript - 如何使用索引文件查看完整日历?

javascript - Angularjs ng-有条件重复

javascript - ng-repeat 嵌套嵌套对象

javascript - AngularJS ng-repeat with ng-bind-html 在数组中呈现 HTML 字符串?

javascript - event.preventDefault 与 event.stopPropagation

javascript - 在输入时按下回车键时注入(inject) HTML

javascript - AJAX 响应中的 jQuery UI 日期选择器

javascript - Raphael.js 以给定的中心点为路径的旋转设置动画

angularjs - 带参数的温泉 ui 导航