2015-10-26 3 views
0

Я совершенно новый для AngularJS и застрял в этом. Я хочу иметь возможность условно отображать на странице оповещение Javascript. Предположим, что я хочу сделать что-то вроде этого:AngularJS insert alert box

<!DOCTYPE html> 
<html> 

    <head> 
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script> 
    </head> 

    <body> 
    <div ng-app="myApp" ng-controller="personCtrl"> 
     <script>{{warning}}</script> 
    </div> 

    <script> 
    var app = angular.module('myApp', []); 
    app.controller('personCtrl', function($scope) { 
     $scope.warning = "alert('This is a warning');"; 
    }); 
    </script> 

    </body> 

</html> 

Поэтому я предположил, что это связано с AngularJS дезинфицирующим строку и вынимая JavaScript. Через некоторое Googling я попробовал следующее:

$scope.warning = $sce.trustAsJS("alert('This is a warning');"); 

Я также попытался trustAsHtml и добавил теги сценария в строке, но и не отображается alertbox. Может ли кто-нибудь сказать мне и сказать мне, что происходит не так?

+1

вы должны просто поместить строку 'alert (..)' в ваш контроллер как обычный код – svarog

+0

, вам не нужно использовать область видимости, просто поместите предупреждение, где вы хотите показать его, как вы используете в javascript. – Shuvro

ответ

0

это должно быть на самом деле так:

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

function MyCtrl($scope) { 
    $scope.name = 'Superhero'; 

    if ($scope.name==='Superhero') { 
     alert("hello"); 
    } 
} 

, если вы хотите, чтобы оповещения, чтобы быть условно показаны на изменяющуюся модель на взгляде попробовать что-то вроде этого:

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

function MyCtrl($scope) { 
    $scope.name = 'Superhero'; 

    $scope.$watch('name', function(newVal, oldVal) { 
     alert("hello"); 
    }) 
} 

теперь каждый раз, когда вы будете измените модель «имя» на ваш взгляд, появится всплывающее предупреждение

обратитесь к doc за дополнительной информацией о часах

0

Вы хотите, чтобы $ scope.warning была функцией, а не результатом выполнения ни одной строки.

$scope.warning = function() { alert('This is a warning'); }; 

Таким образом, его можно назвать позже на ваш взгляд: warning() должен отображать предупреждение.

В качестве альтернативы, так как тревога является функцией, вы можете просто хочу, чтобы использовать его как $ scope.warning:

$scope.warning = alert; 

+

warning('this is a warning') 

будет производить тот же результат.