2015-09-14 5 views
0

Я бы хотел вызвать всплывающее меню и функцию js с помощью одной кнопки. Мне нужно изменить текст в popup с помощью этой функции. Мой Всплывающее код:getelementbyid in Ionic popup

angular.module('starter') 
    .controller('PopupCtrl', function($scope, $ionicPopup, $timeout) { 
    $scope.showAlert = function() { 
     var alertPopup = $ionicPopup.alert({ 
     title: '<div id="location-status"></div>', 
     template: '<div class="text-center"><ion-spinner icon="ripple" class="spinner-positive"></ion-spinner></div>' 
     }); 
    }; 
    }); 

Функция проста до сих пор:

function writeText() { 
    document.getElementById("location-status").innerHTML = "Some text" 
} 

И кнопка:

<button class="button button-icon icon ion-android-locate" ng-click="showAlert()" onclick="writeText()"></button> 

Это работает, когда мой DIV ID = "место-статус" находится где-то в index.html. Он не работал в всплывающем окне. Что не так?

+0

делает) называется всплывающее окно существует в момент WRITETEXT (? возможно, триггеры onclick, прежде чем всплывающее окно будет создано/вставлено в dom. –

+0

Я только что проверил. Это не проблема. Я вызвал всплывающее окно с в нем. При нажатии кнопки ничего не появляется во всплывающем окне. – user293761

ответ

0

Вы можете использовать директиву ng-bind, чтобы добавить текст туда. Используйте ng-click вместо onclick

Код

$scope.showAlert = function() { 
    var alertPopup = $ionicPopup.alert({ 
    title: '<div id="location-status" ng-bind="textToBeShown"></div>', 
    template: '<div class="text-center"><ion-spinner icon="ripple" class="spinner-positive"></ion-spinner></div>' 
    }); 
}; 

$scope.writeText = function(){ 
    $scope.textToBeShown = "Some Text." 
} 

Update

$ionicPopup.alert возвращает обещание, вы можете использовать функцию .then над ним. Как вы хотите получить доступ к всплывающему окну DOM. Внутри функции .then вы можете отобразить DOM на странице. Вы можете вызвать метод writeText.

$scope.showAlert = function() { 
    var alertPopup = $ionicPopup.alert({ 
    title: '<div id="location-status" ng-bind="textToBeShown"></div>', 
    template: '<div class="text-center"><ion-spinner icon="ripple" class="spinner-positive"></ion-spinner></div>' 
    }).then(function(){ 
     writeText(); //Native javascript function. 
    }) 
}; 

Я не призываю вас делать это, делать манипуляции DOM этим способом рассматривается как BAD узор в AngularJS

+0

Спасибо, но мой writeText() - это просто пример. Я бы хотел использовать большую функцию в чистых js. Мое знание AngularJS заключается в том, чтобы его можно было переписать. Но если я могу получить только всплывающие элементы по id, я буду счастлив. Есть идеи? – user293761

+0

@ user293761 посмотрите на обновленный ответ .. –

+0

Все еще ничего. Он по-прежнему выглядит, что я просто не могу получить информацию. – user293761