私はカスタムコントロール付きのGoogleマップを持っていて、クリックするとイオンモダルを開くようにしたい。マップからマーカーをクリアする別のコントロールがあり、正常に動作しています。Googleマップのカスタムコントロールからイオンモダルを開くときに問題が発生する
ボタンの機能としてmodal.show
を入力すると、「クリックしたときにプロパティ '$$ destroyed'が未定義」という読み込みができなくなります。
modal.show()
を入力すると、ページが読み込まれたときにモーダルが開きますが、これは望ましくありません。ボタンをクリックすると再び開きません。
コントローラ
.controller('MapCtrl', function(mapServ, mapFact, $ionicModal, $scope){
var vm = this;
var gmap = mapServ.init();
var markers = mapServ;
// Create modal and Custom Map Controls
$ionicModal.fromTemplateUrl('templates/modal.html', {
scope: $scope
}).then(function(modal) {
vm.modal = modal;
var controlContainer = document.createElement('div');
var clearControl = new mapFact.Control(controlContainer, 'Clear Map', mapFact.clearMap);
var locControl = new mapFact.Control(controlContainer, 'Locations', vm.modal.show());
controlContainer.index = 1;
gmap.controls[google.maps.ControlPosition.TOP_RIGHT].push(controlContainer);
});
// Create Markers
mapFact.markers($rootScope.rests, gmap).then(function(results) {
mapServ.markers = results;
vm.markers = mapServ.markers;
});
});
工場
// Button Constructor
map.Control = function(controlDiv, text, func) {
// Set CSS for the control border.
var controlUI = document.createElement('div');
controlUI.style.backgroundColor = '#ed5929';
controlUI.style.border = '2px solid #ed5929';
controlUI.style.borderRadius = '3px';
controlUI.style.boxShadow = '0 2px 6px rgba(0,0,0,.3)';
controlUI.style.cursor = 'pointer';
controlUI.style.marginBottom = '22px';
controlUI.style.marginRight = '22px';
controlUI.style.marginTop = '22px';
controlUI.style.textAlign = 'center';
controlUI.title = 'Click to toggle markers';
controlDiv.appendChild(controlUI);
// Set CSS for the control interior.
var controlText = document.createElement('div');
controlText.style.color = 'rgb(255,255,255)';
controlText.style.fontWeight = 'bold';
controlText.style.fontFamily = 'Roboto,Arial,sans-serif';
controlText.style.fontSize = '16px';
controlText.style.lineHeight = '38px';
controlText.style.paddingLeft = '5px';
controlText.style.paddingRight = '5px';
controlText.innerHTML = text;
controlUI.appendChild(controlText);
controlUI.addEventListener('click', func);
};
明確にしてください、どのような出力あなたが正確に達成したいですか?まず、「クリックするとイオンモーダルを開く」と言ったが、「modal.show()を置くと、ページが読み込まれたときにモーダルが開きますが、これは望ましくありません」と言いました。また、 'modal.show()'を使用する際にエラーログを共有することもできますか? :) – Teyam
申し訳ありませんが私は明確でない場合。私は、ボタンがモーダルを開くようにしたいが、私はそれがページが読み込まれると自動的に開きたくない。 'modal.show()'を使うとエラーはありません。ページの読み込み時にモーダルが開くだけで、ボタンを押しても何も起こりません。 –