1

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

3 Answers 3

2

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) {
Sign up to request clarification or add additional context in comments.

2 Comments

I am using ui routing so Everytime do i need to pass toaster in parent controller as dependency? –
if you want to use the toaster inside the parent controller you need to pass it as a dependancy
2

You are missing toastr in controller definition.

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

2 Comments

I am using ui routing so Everytime do i need to pass toaster in parent controller as dependency?
You need pass toaster in controller, in which you are using toaster.
2

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>

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.