Niranjan Godbole
Niranjan Godbole

Reputation: 2175

How to display toaster message in Angularjs?

Hello I am developing Angularjs Application. I am trying to display Toaster messages in my angular controller. I refereed http://angular-js.in/angular-toastr/. I am facing below issue. I am not able to call success,info etc notification from controller and i am getting annot read property 'success' of undefined error. I have tried as below.

In index.html i have added below code.

<!--Toaster-->
    <script src="https://unpkg.com/angular-toastr/dist/angular-toastr.tpls.js"></script>
    <link rel="stylesheet" href="https://unpkg.com/angular-toastr/dist/angular-toastr.css" />
    <!--Toaster-->  

this is my main.js

var app = angular.module('RoslpApp', ['pascalprecht.translate', 'ui.router', 'toastr']);
app.config(function ($stateProvider, $urlRouterProvider, $urlRouterProvider, $translateProvider, $translatePartialLoaderProvider) {
 //ui-routing states here});

app.controller('RoslpAppController', ['$scope', '$translate', function ($scope, $translate, toastr) {
    toastr.success('Hello world!', 'Toastr fun!');
    $scope.clickHandler = function (key) {

        $translate.use(key);
    };
}]);

May I know why I am facing issues here? any help would be appreciated. thank you

Upvotes: 1

Views: 4358

Answers (3)

Saurabh Agrawal
Saurabh Agrawal

Reputation: 7739

Try this

<html>
<head>
	<script Src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular.js"></script>
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
	<script src="http://cdnjs.cloudflare.com/ajax/libs/toastr.js/1.3.1/js/toastr.js"></script>
	<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/1.3.1/css/toastr.css">

	<script>
		var app=angular.module("myapp", []);
		app.controller("namesctrl", function($scope){

			$(function () {
				$('#error').click(function () {
        // make it not dissappear
        toastr.error("Noooo oo oo ooooo!!!", "Title", {
        	"timeOut": "0",
        	"extendedTImeout": "0"
        });
    });
				$('#info').click(function () {
   		// title is optional
   		toastr.info("Info Message", "Title");
   	});
				$('#warning').click(function () {
					toastr.warning("Warning");
				});
				$('#success').click(function () {
					toastr.success("YYEESSSSSSS");
				});
			});


		});

		
	</script>
</head>
<body ng-app="myapp" ng-controller="namesctrl">
	<input type="button" value="Error" id="error" />
	<input type="button" value="Info" id="info" />
	<input type="button" value="Warning" id="warning" />
	<input type="button" value="Success" id="success" />
	<br><br><br><br>
	See official example: <a href='http://codeseven.github.io/toastr/demo.html' target='blank'>Here</a>
</body>
</html>

Upvotes: 2

Sachila Ranawaka
Sachila Ranawaka

Reputation: 41387

add toastr as string dependency to the controller.

change this

app.controller('RoslpAppController', ['$scope', '$translate',function ($scope, $translate, toastr) {

to this

app.controller('RoslpAppController', ['$scope', '$translate','toastr',function ($scope, $translate, toastr) {

Upvotes: 2

Matej Marconak
Matej Marconak

Reputation: 1413

You are missing toastr in controller definition.

app.controller('RoslpAppController', ['$scope', '$translate','toastr', function ($scope, $translate, toastr) {

Upvotes: 2

Related Questions