javascript - Angular JS - 替换 ng-options 中的空值

标签 javascript angularjs angularjs-directive

我有一个想要在下拉菜单中显示的对象列表,我正在使用 ng-options 来执行此操作:

<select ng-model="query.color" ng-options="c.name + ' ' + c.shade for c in colors" />

但是,我正在使用的对象的某些属性可能为空。在此示例中,颜色的阴影可以设置为空。

$scope.colors = [{
    name: 'black',
    shade: 'dark'
}, {
    name: 'yellow',
    shade: null
}];

而不是将下拉列表的值设置为 yellow null ,我希望它是 yellow

有没有办法用空字符串替换 null 值?我尝试过使用 ngModel.$parsers,但 $parsers 仅在选择特定选项后才会被调用。在生成选项标签之前是否有一段时间我可以进行替换?

这是jsfiddle这包括我的 $parsers 实现

最佳答案

一个filter就可以了。像这样的事情:

myApp.filter('myFilter', function() {
    return function (c) {
        var text = c.name;
        if (null !== c.shade)
        {
            text += " " + c.shade;
        }
        return text;
    };
});

然后你的ng-options将如下所示:

ng-options="c | myFilter for c in colors"

看到这个 fiddle :http://jsfiddle.net/EBnPe/

关于javascript - Angular JS - 替换 ng-options 中的空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18476767/

相关文章:

javascript - AngularJS - 获取指令中的过滤器长度

javascript - Meteor.js 登录事件

javascript - 如何使用javascript从字符串中删除\(反斜杠)符号?

javascript - 当我为来自服务器的数据实现一些更 Angular js 代码时,轮播停止工作

javascript - $digest 渲染 ng-repeat 作为注释

angularjs - 指令的隔离范围

javascript - svg/snapsvg 创建弯曲的文本

javascript - 如何使用 JavaScript 从 firebase JSON 检索每个对象的数据

angularjs - 我应该使用哪种方法来手动引导我的 AngularJS?

javascript - javascript中的setTimeout和AngularJS中的$timeout服务之间的区别