2016-12-04 1 views
0

У меня есть это заявление:обновление Javascript object`s метод

$scope.showAlert = function() { 
    var alertPopup = $ionicPopup.alert({ 
     title: 'Notification', 
     template: '' 
    ); 
    $timeout(function() { 
     alertPopup.close(); //close the popup after 3 seconds for some reason 
       }, 30000); 
}; 

то у меня есть это:

 if (!$scope.newDevice.name) { 
      $scope.showAlert.template = 'Name Required'; 
      showAlert(); 
      return; 
     } 

Но я не знаю точно, как обновить template после I`ve объявил его пустой. Я пробовал:

$scope.showAlert.template = 'Name Required'; 

или $scope.showAlert['template'] = 'Name Required'; но couldn't`t сделать его

ответ

1

В коде template это просто свойство объекта. Область действия этого объекта - это функция showAlert, поэтому вы не можете получить к ней доступ и обновить ее вне метода. Что вы можете сделать вместо этого ввести параметр шаблона функционировать showAlert, и использовать его при отображении предупреждение:

$scope.showAlert = function(alertTemplate) { // <- introduce parameter 
    if(alertTemplate === undefined) { // If parameter was not provided ... 
     alertTemplate = '';    // ... set it to empty string 
    } 
    var alertPopup = $ionicPopup.alert({ 
     title: 'Notification', 
     template: alertTemplate // <- use parameter value 
    ); 
    $timeout(function() { 
     alertPopup.close(); //close the popup after 3 seconds for some reason 
       }, 30000); 
}; 

И тогда вы можете использовать его как это:

if (!$scope.newDevice.name) { 
    $scope.showAlert('Name Required'); 
    return; 
} 

В тех случаях, когда вы не» t необходимо предоставить настраиваемый шаблон, вы можете просто опустить параметр, и будет использоваться пустая строка:

$scope.showAlert(); 
+0

если я добавлю $ scope.showAlert («ничего»); он будет всплывать в 2 раза. один раз и один раз с шаблоном – Xao

+0

Я должен добавить его showAlert («ничего»); но это не передает параметр – Xao

+0

@Xao. Вы не показываете какой-то код. Если вы вызываете 'showAlert()', как вы делали в своем примере, он должен выкидывать ошибку, потому что функция 'showAlert' не существует (или, по крайней мере, вы ее не показываете). И если никакой другой функции предупреждения не существует в '$ scope', я не вижу причины, по которой всплывающее окно должно отображаться дважды. – dotnetom

Смежные вопросы