具有空值的AngularJS select语句

时间:2015-06-29 09:13:59

标签: angularjs

我需要在AngularJS中显示一个包含单个空值选项的选择列表。这是Angular控制器的存根:

function BookController($scope) {
    $scope.book = {
        titleId: null
    };

    $scope.titles = [
        {id: null, text: "Book Title <null>"},
        {id: 1,    text: "Book Title #1"},
        {id: 2,    text: "Book Title #2"},
        {id: 3,    text: "Book Title #3"}
    ];
}

这可以正常工作,只有一个例外,Angular似乎在列表的头部插入了一个额外的空白'option'元素:

<option value="" selected="selected" label=""></option>

此选项似乎不会对该功能产生负面影响 - 即使用户选择该功能,选择列表也会选择第一个“真实”选项。有趣的是(?)此选项仅在选择null选项时出现,如果选择了值/非null选项,则空白选项将消失。

从UI的角度来看,我认为这不是理想的 - 有没有人知道是什么导致这种情况以及它是否可以避免?

这里有一个JSFiddle https://jsfiddle.net/xab21mrr/4/

谢谢。

2 个答案:

答案 0 :(得分:1)

是angular添加了一个空选项,你无法做任何事情......但根据你的需要,我建议你重构一下:

controller(删除空的第一个对象):

$scope.titles = [
    {id: 1,    text: "Book Title #1"},
    {id: 2,    text: "Book Title #2"},
    {id: 3,    text: "Book Title #3"}
];

模板:

<select ng-model="book.titleId" ng-options="title.id as title.text for title in titles">
    <option value="">Book Title null</option>
</select>

这样,你就可以得到你的&#34; null&#34;选项而不是空的

编辑:修复了错误(感谢JB Nizet的评论)。不过,您可能需要此重构,因为它是显示与任何服务器数据无关的空/重置选项的标准方法)

答案 1 :(得分:0)

LocalDateTime.now()