當模型eyeColorUnknown包含一個不存在於選項中的值時Angular創建一個值爲「?」的選項如下所示,視覺描述爲空白。Angular ng-options - 當模型包含選項列表中不存在的值時,是否有方法添加選項?
<select ng-model="eyeColorUnknown"
ng-options="option.val as (option.desc + ' - ' + option.val) for option in options | orderBy:'desc'"
class="ng-pristine ng-valid">
<option value="?"></option>
<option value="0">Blue - 001</option>
<option value="1">Brown - 003</option>
<option value="2">Green - 002</option>
</select>
有沒有辦法要麼:
1)增加一個選項使用值和的描述「值 - 說明」,而不是?
例如: 未知 - 999 藍色 - 001 布朗 - 003 綠色 - 002
2)保持的選擇,但顯示無論是 「發生不明」 或 「VAL - 未知」? 例如:
<option value="?">Unknown</option>
or
<option value="?">Unknown - 999</option>
<option value="0">Blue - 001</option>
<option value="1">Brown - 003</option>
<option value="2">Green - 002</option>
</select>
3)其他?
以下是幫助重新創建場景的示例代碼。 $ scope.options當前是靜態的,但是可以使用一個服務來檢索,這個服務可以在過期日期過期時過濾掉一個選項,這會導致這種情況發生。我知道有一些討論應該在SOA的SOA方面進行,但對錶示層中可用的可能性感興趣。
<html ng-app="sampleApp">
<head lang="en">
<meta charset="utf-8">
<title>HTML Select Demonstration</title>
<link rel="stylesheet" type="text/css" href="webjars/bootstrap/3.2.0/css/bootstrap.css" />
</head>
<body>
<div ng-controller="sampleAppCtrl">
<h1>DEMO of Select and ng-options</h1>
<p></p>
<div>
<select ng-model="eyeColor"
ng-options="option.val as (option.desc + ' - ' + option.val) for option in options | orderBy:'desc'"></select>
<span> Value in the model: [{{eyeColor}}]</span>
</div>
<div>
<select ng-model="eyeColorUnknown"
ng-options="option.val as (option.desc + ' - ' + option.val) for option in options | orderBy:'desc'"></select>
<span> Value in the model: [{{eyeColorUnknown}}]</span>
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.20/angular.min.js"></script>
<script type="text/javascript" src="sample_app.js"></script>
</body>
</html>
sample.js
var app = angular.module('sampleApp', []);
(function()
{
angular.module('sampleApp').controller('sampleAppCtrl', SampleAppController);
function SampleAppController($scope)
{
$scope.eyeColor = "001";
$scope.eyeColorUnknown = "999";
$scope.options = [ {
"val": "001",
"desc": "Blue"
}, {
"val": "002",
"desc": "Green"
}, {
"val": "003",
"desc": "Brown"
} ];
}
;
})();
UPDATE 2015年2月13日: 在angular.js提供的selectDirective包含插入一個 '' 當模型渲染()方法值與選項中的值不匹配。角碼摘錄如下所示,修改爲顯示爲Unknown而不是任何內容。我正在尋找建議,無需修改angular.js代碼。我希望這能夠澄清我的挑戰。
if (!multiple) {
if (nullOption || modelValue === null) {
// insert null option if we have a placeholder, or the model is null
optionGroups[''].unshift({id:'', label:'', selected:!selectedSet});
} else if (!selectedSet) {
// option could not be found, we have to insert the undefined item
//
// WARNING: Modified to show 'Unknown' rather than nothing.
//
optionGroups[''].unshift({id:'?', label:'Unknown', selected:true});
}
}
任何援助將不勝感激。
爲什麼不能靜態添加'' – 2015-02-06 20:25:00
雖然該示例顯示的是靜態值999,但實際模型將通過可能返回不同值的服務也不是選項列表的一部分。 – Dyno 2015-02-07 05:15:43
當您選擇其他的東西或者它應該保持並且可以選擇時,''選項值=「?」>未知 - 999'應該消失嗎?如果仍然存在,選擇時應該爲「ng-model」設置什麼值? '999'的原始未知值? – tasseKATT 2015-02-07 07:02:46