Javascript 使用手动选项进行选择
我们的应用程序中有一些下拉列表,我们可以不使用ng选项,因为我们需要在标签上设置title属性,这在ng选项中是不可能的 我们需要标题的原因是因为IE<9删掉了太长的值,并且这些值只有在标题下才可见(显示在元素的悬停处) 现在,为了了解我的问题,请看下面的JS fiddle (HTML位)Javascript 使用手动选项进行选择,javascript,angularjs,Javascript,Angularjs,我们的应用程序中有一些下拉列表,我们可以不使用ng选项,因为我们需要在标签上设置title属性,这在ng选项中是不可能的 我们需要标题的原因是因为IE
任何
{{v.name}
{{params.value}}
理想情况下,select会选择“test3”,但您可以看到它被设置为空选项。我理解这是因为ng模型的值不存在于ng选项中,但这是因为我没有定义一个
有没有办法让这样的东西起作用?甚至可以为ng选项生成的选项添加标题,这样我们就可以使用它了
编辑
如下面的答案所述,将提琴更新为。{{v.name}
<option ng-repeat="v in options" value="{{v.value}}" title="{{v.name}}"
ng-selected="checkOption(v.value)">{{v.name}}</option>
$scope.checkOption = function(value){
return($scope.params.value == value);
}
$scope.checkOption=函数(值){
返回($scope.params.value==value);
}
[更新]忘记传递值变量。更新了fiddle and answer。实际上,只需从所选ng中的表达式中删除大括号,它就会工作:
<option ng-repeat="v in options"
value="{{v.value}}"
title="{{v.name}}"
ng-selected="v.value == params.value">{{v.name}}
</option>
{{v.name}
您可能还想看看我的代码中的select2指令,我在ng change=“changeItem()”上重新计算select title HTML
选择项
{{selectedId}
{{myTitle}}
app.js
angular.module('myApp', []);
function MyCtrl($scope) {
$scope.items = [{
id: 1,
title: "Icebox"
}, {
id: 2,
title: "Summer"
}, {
id: 3,
title: "Milestone"
}];
$scope.changeItem = function() {
$scope.myTitle = undefined;
for(var i=0; i<$scope.items.length; i++){
if($scope.items[i].id == $scope.selectedId){
$scope.myTitle = $scope.items[i].title;
}
}
}
}
angular.module('myApp',[]);
函数MyCtrl($scope){
$scope.items=[{
id:1,
标题:“冰箱”
}, {
id:2,
标题:“夏天”
}, {
id:3,
标题:“里程碑”
}];
$scope.changeItem=函数(){
$scope.myTitle=未定义;
对于(var i=0;i对于手动选项,您只需要使用ng model
指令。此ng model
指令为所选选项提供双向数据绑定
jsfiddle:
苹果
橙色
所选值为{selectedFruit}
函数AppCtrl($scope){
$scope.selectedFruit='1';
}
看看我的答案。ngSelected
以表达式作为参数。文档页面上的注释不正确。在您的答案中检查选项(v.value)
是一个字符串,由Angular作为当前作用域中的表达式进行计算。因此表达式很好。接受satchmorun的答案,因为它在技术上更正确。只需去掉{}这将需要一个函数或一个常规==检查。谢谢,虽然Ben,方向正确,也会修复它。@nick.stuart我非常同意。在阅读了satchmorun的答案后,我也有一个doh!片刻。gaahhh!谢谢,就是这样。我已经更新了小提琴,所以它可以工作。它仍然在顶部添加了奇怪的空白,但那是g当选择某样东西时,它会消失。
<div ng-app="myApp" ng-controller="MyCtrl">
<select ng-options="item.id as item.title for item in items"
ng-model="selectedId" ng-change="changeItem()" title="{{myTitle}}">
<option value="" disabled selected style="display: none;">Select Item</option>
</select>
<div>
{{selectedId}}
</div>
<div>
{{myTitle}}
</div>
</div>
angular.module('myApp', []);
function MyCtrl($scope) {
$scope.items = [{
id: 1,
title: "Icebox"
}, {
id: 2,
title: "Summer"
}, {
id: 3,
title: "Milestone"
}];
$scope.changeItem = function() {
$scope.myTitle = undefined;
for(var i=0; i<$scope.items.length; i++){
if($scope.items[i].id == $scope.selectedId){
$scope.myTitle = $scope.items[i].title;
}
}
}
}
<body ng-app ng-controller="AppCtrl">
<select ng-model="selectedFruit" >
<option value ='1'> Apple</option>
<option value ='2'> Orange</option>
</select>
Selected value is {{selectedFruit}}
</body>
function AppCtrl($scope) {
$scope.selectedFruit = '1';
}