Соответствие ng-картам ng-материала
Я пытаюсь создать макет с помощью angular material desgin
с двумя столбцами:
<div layout="row">
<div flex="33">
123
</div>
<div flex="77">
456
</div>
</div>
это нормально. но если я поместил элемент ng-map:
<div layout="row">
<div flex="33">
123
</div>
<div flex="77">
<ng-map ></ng-map>
</div>
</div>
представлен вертикально. почему?
demo: https://plnkr.co/edit/mNdHAwGXC0vLE7Erttib?p=preview
Ответы
Ответ 1
При проверке элемента я думаю, что тэг ng-map автоматически загружает некоторый стиль из google apis, который переопределяет стиль flex/ angular.
Я написал решение здесь: https://plnkr.co/edit/GHYZoC5BotyD58RG0Qdj?p=preview
Я посмотрел макет документации Angular. Я думаю, что действительно нет хорошего способа переопределить стиль CSS ng-map, который автоматически загружается.
Итак, я решил просто использовать какой-то пользовательский CSS, который использует float для размещения двух элементов:
.first {
height: 250px;
width: 250px;
position: relative;
float: left;
}
.map {
height: 250px;
width: 250px;
position: relative;
float: right;
}
.container {
width: 500px;
margin-right: auto;
margin-left: auto;
height: auto;
}
HTML:
<body ng-controller="ctrl">
<div class="container">
<div class="first">Hello</div>
<ng-map class="map"></ng-map>
</div>
</body>
Ответ 2
Заглянув в console
, вы можете увидеть следующую ошибку:
TypeError: $element.bind
не является функцией at new __MapController
(ng-map.js: 318)
flex
атрибуты применяют классы CSS, как указано ниже:
./angular -material.min.css
.layout-row>.flex-66 {
-webkit-box-flex: 1;
-webkit-flex: 1 1 66.66%;
flex: 1 1 66.66%;
max-width: 66.66%;
max-height: 100%;
box-sizing: border-box
}
И затем некоторые другие стили, но они отвечают за flexgrid. Если вы применяете стили вручную в родительском <ng-map>
, они работают.
Упомянутая ошибка в <ng-map>
прекращает выполнение сценариев в какой-то момент, чтобы не применять ожидаемую форму класса .flex-*
./angular-material.min.css на обертке <div>
.
Рассмотрим открытие новой проблемы (я их проверил, там нет ни одного вопроса)
или просто используя другой плагин карты.
Ответ 3
Вы не включаете таблицу стилей загрузки
<!DOCTYPE html>
<html ng-app="myApp">
<head>
<meta charset="utf-8" />
<title>AngularJS Plunker</title>
<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/angular_material/1.1.0/angular-material.min.css">
<link rel="stylesheet" href="style.css" />
<script src="//code.jquery.com/jquery-3.1.1.slim.min.js" integrity="sha256-/SIrNqv8h6QGKDuNoLGA4iret+kyesCkHGzVUUV0shc=" crossorigin="anonymous"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-animate.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-aria.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-messages.min.js"></script>
<!-- Angular Material Library -->
<script src="//ajax.googleapis.com/ajax/libs/angular_material/1.1.0/angular-material.min.js"></script>
<script src="//maps.google.com/maps/api/js"></script>
<script src="//rawgit.com/allenhwkim/angularjs-google-maps/master/build/scripts/ng-map.js"></script>
<script src="app.js"></script>
</head>
<body ng-controller="ctrl">
<div layout="row" style="display: flex;">
<div flex="33" style="width: 33%">
123
</div>
<div flex="77" style="width: 77%">
<ng-map ></ng-map>
</div>
</div>
</body>
</html>
Live https://plnkr.co/edit/lldddeNsw3LwhhXQkBv4?p=preview