Angularjs ngModel在特定情况下不更新

Angularjs ngModel在特定情况下不更新,angularjs,Angularjs,好吧,我已经盯着这个代码看了好几个小时了,它根本没有任何意义 我试图遍历扩展类型列表,并将它们显示在下拉列表中,以便与复选框一起使用。问题是,当我在sk checkbox指令中检查ngModel时,它不正确。在一种情况下,ngModel是正确的,我可以看到值从true->false切换,但在另一种情况下,我的ngModel从undefined->true切换。。。为什么ng模型在第一个实现中能正常工作,而在第二个实现中却不能 这一个有效 {{ normalizeIcons(user.UI.Res

好吧,我已经盯着这个代码看了好几个小时了,它根本没有任何意义

我试图遍历扩展类型列表,并将它们显示在下拉列表中,以便与复选框一起使用。问题是,当我在
sk checkbox
指令中检查ngModel时,它不正确。在一种情况下,ngModel是正确的,我可以看到值从
true->false
切换,但在另一种情况下,我的ngModel从
undefined->true
切换。。。为什么
ng模型
在第一个实现中能正常工作,而在第二个实现中却不能

这一个有效

{{ normalizeIcons(user.UI.Restore.Files.dataSet) | json }}
<li ng-repeat="icon in normalizeIcons(user.UI.Restore.Files.dataSet)">
    <div sk-checkbox ng-model="user.UI.Restore.Files.filter[icon]" name="icon-{{icon}}" ></div>
    <img sk-img class="extIcon {{icon}}" />
</li>
所以这里唯一的区别是,我正在做更多的工作来解析一个角度常数,
ICONS.map
。不起作用的情况只是使用一个简单的数组赋值

在我使用第一个有效的实现之前,我没有想到它。现在,我希望能够返回一个固定的图标数组,然而,假设更简单的版本是不起作用的

图标常数

{
    map: {
        'docx': 'word',
        'doc': 'word',
        'dot': 'word',
        'dotx': 'word',
        'xls': 'excel',
        'xlsx': 'excel',
        'xlt': 'excel',
        'xltx': 'excel',
        'ppt': 'powerpoint',
        'pps': 'powerpoint',
        'pptx': 'powerpoint',
        'pot': 'powerpoint',
        'potx': 'powerpoint',
        'pdf': 'adobe-pdf',
        'ai': 'adobe-ill',
        'ait': 'adobe-ill',
        'eps': 'adobe-ill',
        'psd': 'adobe-photo',
        'psb': 'adobe-photo',
        'png': 'image',
        'jpg': 'image',
        'jpeg': 'image',
        'gif': 'image',
        'tif': 'image',
        'svg': 'image',
        'vsd': 'visio',
        'vdx': 'visio',
        'vsdx': 'visio',
        'vss': 'visio',
        'vsx': 'visio',
        'vst': 'visio',
        'vtx': 'visio'
    },
    list: ['word', 'excel', 'powerpoint', 'adobe-pdf', 'adobe-ill', 'adobe-photo', 'image', 'visio', 'default']
}

那么你得到了什么回报?我们不知道什么是
图标。请列出
is@charlietfl更新了…我已经在控制台上记录了这两个数组,它们的数组是相同的,只是顺序与此无关。好的…那不是数组,而是嵌套对象。需要为
ng repeat
um.使用对象语法。。我不是在对象上迭代。。。我正在迭代图标。列出图标对象底部的数组
service.normalizeIcons = function(data){
        var icons = [];

        if(data) {
            var exts = _.pluck(data, 'extension');
            var unique = _.uniq(exts);

            var iconClasses = [];
            unique.forEach(function(ext){
                iconClasses.push(ICONS.map[ext] || 'default');
            });

            icons = _.uniq(iconClasses);
        }else{
            icons = ICONS.list;
        }

        return icons;
    }
{
    map: {
        'docx': 'word',
        'doc': 'word',
        'dot': 'word',
        'dotx': 'word',
        'xls': 'excel',
        'xlsx': 'excel',
        'xlt': 'excel',
        'xltx': 'excel',
        'ppt': 'powerpoint',
        'pps': 'powerpoint',
        'pptx': 'powerpoint',
        'pot': 'powerpoint',
        'potx': 'powerpoint',
        'pdf': 'adobe-pdf',
        'ai': 'adobe-ill',
        'ait': 'adobe-ill',
        'eps': 'adobe-ill',
        'psd': 'adobe-photo',
        'psb': 'adobe-photo',
        'png': 'image',
        'jpg': 'image',
        'jpeg': 'image',
        'gif': 'image',
        'tif': 'image',
        'svg': 'image',
        'vsd': 'visio',
        'vdx': 'visio',
        'vsdx': 'visio',
        'vss': 'visio',
        'vsx': 'visio',
        'vst': 'visio',
        'vtx': 'visio'
    },
    list: ['word', 'excel', 'powerpoint', 'adobe-pdf', 'adobe-ill', 'adobe-photo', 'image', 'visio', 'default']
}