我正在尝试在ng-options
选择列表的选项中硬编码,因为它的范围没有答案。通过这样做,我能够在另一种情况下实现这一目标:
ng-show="!$scope.length"
但是,它似乎不在选择列表本身内部工作。也许它与Angular ng-options
的作用有关吗?这是我的尝试:
<select ng-model="myModel" ng-options="option.title for option in optionsList">
<option ng-show="!optionsList.length">There are no prompts for this lesson.</option>
</select>
我在select中使用相同的逻辑硬编码了一个选项,但它似乎不想工作。提前谢谢!
答案 0 :(得分:1)
执行此操作的一种方法是创建一个过滤器,如果为空,则插入默认选项...
.filter('defaultOptionIfEmpty', function () {
return function (items, defaultItem) {
return items.length ? items : [defaultItem];
}
});
像这样使用它......
<select ng-model="foo" ng-options="item.value for item in items | defaultOptionIfEmpty : {id: 0, value: 'There are no prompts for this lesson.'}">
</select>
答案 1 :(得分:0)
假设您的选项数据是&#34; dataBlocksHere.currentData.selections&#34;,您需要预处理此块以检查其中是否有任何内容,并将相应的内容插入其中。 因此,在将项目分配到范围之前,请在javascript中处理结果。
if(!dataBlocksHere.currentData.selections){
// insert item into selections, something like
dataBlocksHere.currentData.selections['data'] = {id: 0, data: "There are no prompts for this lesson."};
}