使用图像进行角度选择
Angular select with images
情况:
我需要在语言选择中插入标志。我在谷歌和StackOverflow中搜索过,但创建的解决方案对我不起作用。
代码:
在控制器中:
$scope.language_list = [{'name': 'english', 'url': 'https://raw.githubusercontent.com/stevenrskelton/flag-icon/master/png/16/country-4x3/gb.png'},{'name': 'italian', 'url': 'https://raw.githubusercontent.com/stevenrskelton/flag-icon/master/png/16/country-4x3/it.png'}];
视图中:
<select ng-model="language_selected">
<option ng-repeat="language in language_list" data-image="{{language.url}}" >{{language.name}}</option>
</select>
示例:
http://jsfiddle.net/tcVhN/168/
问题:
如何在角度选择中插入图像?
编辑:
这是溶液的Plunker,已清理:
http://plnkr.co/edit/hMlNjkDL3l0QKF37pCa0?p=preview
作为其他答案,您不能使用<options>
来添加图像,但您可以使用角度模块ui-select
来实现您想要做的事情。
这是一个演示,带有ui select和您的数据。
清理代码并获得所需内容。
如果您对搜索框不感兴趣,请将CSS覆盖为,
.select2-search {
display: none;
}
演示
这对于原生选择元素来说是不可能的
因此,您需要使用其他html元素设计一个选择框&css,
试试这个:
var app = angular.module('app',[]);
//app.directive('appDirective', function() {});
//app.factory('appService', function() {});
function AppCtrl($scope) {
$scope.obj={language_selected : {'name':'Choose a language'}};
$scope.language_list = [{'name': 'english', 'url': 'https://raw.githubusercontent.com/stevenrskelton/flag-icon/master/png/16/country-4x3/gb.png'},{'name': 'italian', 'url': 'https://raw.githubusercontent.com/stevenrskelton/flag-icon/master/png/16/country-4x3/it.png'}];
}
.select_list{
background-color: #fff;
border: 1px solid #b3b3b3;
cursor: pointer;
height: 21px;
line-height: 21px;
padding: 3px 5px;
position: relative;
vertical-align: middle;
width: 250px;
}
.select_list:after{
content:"▼";
position:absolute;
right:3px;
color:#b3b3b3;
}
.select_list > .options{
display:none;
position:absolute;
top:100%;
left:-1px;
width:100%;
border:1px solid #666;
padding:0;
margin:0;
}
.select_list.active > .options{
display:block;
}
.select_list > span, .select_list > .options li {
background-position: 5px center;
background-repeat: no-repeat;
padding-left: 30px;
list-style:none;
}
.select_list > .options li:hover {
background-color:#eee;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.min.js"></script>
<div ng-app="app" ng-controller="AppCtrl">
<div class="select_list" ng-class='{active:active}' ng-click="active=!active">
<span ng-style="{'background-image':'url('+obj.language_selected.url+')'}">{{obj.language_selected.name}}</span>
<ul class="options">
<li class="select_list_option" ng-repeat="language in language_list" ng-click="obj.language_selected=language" ng-style="{'background-image':'url('+language.url+')'}">{{language.name}}</li>
</ul>
</div>
</div>
答案:
这根本不可能。
<option>
标记允许的内容是具有最终转义字符的Text(如é
(。不允许使用HTML。
有关详细信息,请参阅文档。
解决方案:
使用CSS和HTML制作自定义下拉列表。
<option>
只支持文本。
您可能需要使用复杂的HTML/CSS/JavaScript滚动自己的下拉控件。如何做可能在你的问题范围内,也可能不在你的范围内。
或者,您可以使用不重复的background-image
并在文本上应用一些填充以实现类似的效果。但是,如果每个<option>
都有一个唯一的映像,那么您的代码将被每个<option>
的style
属性所污染。如果你不介意,那没关系。否则,你自己滚吧。
引用自:添加带有选项标签的图像
您可以生成css类(根据语言名称或仅为此添加新值(,并将图像作为背景图像添加到css中(使用sprite(,而不是插入图像。
<select ng-model="language_selected">
<option ng-repeat="language in language_list" ng-class="{{ language.name }}" >{{ language.name }}</option>
</select>
对于css精灵,我通常使用带有指南针的sass。
- 如何使用JavaScript/jQuery选择图像的多边形区域
- jQuery blimp文件上传-上传后保留选择图像行
- 如何在Imgareaselect中选择图像根据像素进行选择
- 如何在选择图像时显示刻度图像
- jquery选择图像不起作用
- 悬停并选择图像贴图的状态
- 如何在选择图像时显示图像
- 在 JavaScript 中的 ClickEvent 上选择图像
- 响应式文件管理器.防止在选择图像时模式关闭
- 将鼠标悬停在地图上时,取消选择图像映射的选定区域
- 建议为选择图像创建代码
- 选择图像(但尚未上传)时更改输入类
- CKFinder 如何在选择图像时获取尺寸 URL 和尺寸(宽度/高度)(文件:选择)
- 通过 jscript 随机选择图像时动态全尺寸调整图像大小的问题
- html5选择图像并进行操作
- DNN:HTML编辑器不显示要选择图像的文件夹
- 选择图像的一部分,并使用jQuery检索其坐标
- 如何在单击时仅选择图像的一部分
- 在javascript中选择图像
- 从弹出窗口中选择图像并显示在主页面中