在AngularJS 1.6中悬停时,在md-select / md-options上显示图像/背景 [英] Show image / background on md-select / md-options on hover in AngularJS 1.6

查看:137
本文介绍了在AngularJS 1.6中悬停时,在md-select / md-options上显示图像/背景的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正试图将鼠标悬停在AngularJS素材 md-select 下拉列表中,在悬停状态下,它会在中显示旁边的图像格 / 跨度。我正在统一以下代码,但它仍然没有来:

I'm trying to put a hover on AngularJS material md-select dropdown where in on hover it shows a image next to it in a div/span. I'm unising the below code but still it's not coming:

<md-select id="{{mapping.id}}" ng-model="mapping.value">
  <md-option ng-value="option" 
             ng-mouseenter="show = true" 
             ng-mouseleave="show = false" 
             ng-repeat="map in mapping.values" 
             ng-selected="$first">{{maping.options[$index]}}</md-option>
  <span ng-show="show">
      <img src="{{mapping.image[$index]}}" 
           align-"right" width="60px" 
           height="40px" 
           vertical-align="top"/>
  </span>
</md-select>

并在app中使用以下内容:

and using the below in app:

scope.shopw = false;

我们可以暂停一下吗?如下所示, http://plnkr.co/edit/j5LBYQCXvN9LhXt25tTb?p=preview

Can we have a watch on hover? to have something like below, http://plnkr.co/edit/j5LBYQCXvN9LhXt25tTb?p=preview

推荐答案

您可以通过编写自己的指令来实现这一目的就像我为你做的那样。请查看 可运行的小提琴演示

You could achieve that by writing an own directive like I did for you. Please check this runnable fiddle demo.

<div ng-app="sandbox" ng-controller="myCtrl">
  <div layout-gt-sm="row" layout="column" layout-margin>
    <main flex-md="60" flex-order-gt-sm="2">
      <h1 class="md-title">
        Main Content
      </h1>
      <div layout="row" layout-xs="column">
        <div flex="60">
          <md-select ng-model="mapping.value">
            <md-option ng-value="map.name"
                       ng-repeat="map in mapping.values" 
                       ng-selected="$first"
                       container-image
                       class="image-container"
                       image="map.image">{{map.name}}</md-option>
          </md-select>
        </div>
      </div>
    </main>
  </div>
</div>



CSS



CSS

._md {
  overflow: visible;
}

.preview-image {
  position: absolute;
  height:100px;
  width:100px;
  right: -140px;
}



申请:



Application:

var myApp = angular.module('sandbox', ['ngMaterial']);

myApp.controller('myCtrl', function($scope) {
  $scope.mapping = {
    value: null,
    values: [ {
        name: "1",
        image: "http://placehold.it/100x100"
      }, {
        name: "2",
        image: "http://placehold.it/100x100"
      }, {
        name: "3",
        image: "http://placehold.it/100x100"
      },
    ]
  }
});

myApp.directive('containerImage', function($compile) {
  return {
    restrict: 'A',
    scope: {
      image: "="
    },
    link: function (scope, element, attrs) {

      element.on('mouseover', function (e) {
        if (element.find("img").length === 0) {
          var imageElement = angular.element('<img class="preview-image" src="'+ scope.image +'" height="100" width="100" />');
          element.append(imageElement);
          $compile(imageElement)(scope);
        } else {
          element.find("img").attr('style', 'display:block');
        }
      });

      element.on('click', function (e) {
          element.find("img").attr('style', 'display:none');
      });

      element.on('mouseleave', function (e) {
          element.find("img").attr('style', 'display:none');
      });
    }
  }
});

这篇关于在AngularJS 1.6中悬停时,在md-select / md-options上显示图像/背景的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆