Javascript 任何控制器angularjs中的火灾通知烤面包机

Javascript 任何控制器angularjs中的火灾通知烤面包机,javascript,angularjs,Javascript,Angularjs,我正在使用此服务进行通知: 它工作得很好。我已经在我的应用程序中的任何地方配置了这个按钮,我创建了一个pop()按钮,单击触发通知烤面包机。 我现在需要的是应用程序中的任何控制器,可以调用触发通知方法。 例如,在控制器ProductController中,我随时调用pop(),然后会触发通知。 尽管有任何视图,但控制器中的pop()方法函数根本不起作用。 有什么细节我没注意到吗 My index.html <!DOCTYPE html> <html lang="en" data

我正在使用此服务进行通知:
它工作得很好。我已经在我的应用程序中的任何地方配置了这个按钮,我创建了一个pop()按钮,单击触发通知烤面包机。
我现在需要的是应用程序中的任何控制器,可以调用触发通知方法。
例如,在控制器ProductController中,我随时调用pop(),然后会触发通知。
尽管有任何视图,但控制器中的pop()方法函数根本不起作用。
有什么细节我没注意到吗

My index.html

<!DOCTYPE html>
<html lang="en" data-ng-app="app">
<head>
  <meta charset="utf-8" />
  <title>My App</title>
  <meta name="description" content="app, web app, responsive, responsive layout, admin, admin panel, admin dashboard, flat, flat ui, ui kit, AngularJS, ui route, charts, widgets, components" />
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
  <link rel="stylesheet" href="css/bootstrap.css" type="text/css" />
  <link rel="stylesheet" href="css/animate.css" type="text/css" />
  <link rel="stylesheet" href="css/font-awesome.min.css" type="text/css" />
  <link rel="stylesheet" href="css/simple-line-icons.css" type="text/css" />
  <link rel="stylesheet" href="css/font.css" type="text/css" />
  <link rel="stylesheet" href="css/app.css" type="text/css" />

  <link rel="stylesheet" href="js/modules/toaster/toaster.css" type="text/css" />

</head>
<body ng-controller="AppCtrl">
  <div class="app" id="app" ng-class="{'app-header-fixed':app.settings.headerFixed, 'app-aside-fixed':app.settings.asideFixed, 'app-aside-folded':app.settings.asideFolded, 'app-aside-dock':app.settings.asideDock, 'container':app.settings.container}" ui-view></div>
  <!-- jQuery -->
  <script src="js/jquery/jquery.min.js"></script>
  <!-- Angular -->
  <script src="js/libs/angular/angular.js"></script>
  <script src="js/libs/angular/angular-cookies.js"></script>
  <script src="js/libs/angular/angular-animate.js"></script>
  <script src="js/libs/angular/angular-resource.js"></script>
  <script src="js/libs/angular/angular-ui-router.js"></script>
  <script src="js/libs/angular/ngStorage.js"></script>
  <script src="js/libs/angular/ocLazyLoad.js"></script>
  <script src="js/libs/angular/ui-bootstrap-tpls.js"></script>
  <script src="js/angular/angular-translate.js"></script>
  <script src="js/angular/ui-jq.js"></script>
  <script src="js/angular/ui-load.js"></script>
  <script src="js/angular/ui-validate.js"></script>
  <!-- App -->
  <script src="js/app.js"></script>
  <script src="js/services.js"></script>
  <script src="js/controllers.js"></script>
  <script src="js/controller-university.js"></script>
  <script src="js/filters.js"></script>
  <script src="js/directives.js"></script>

  <script src="js/modules/toaster/toaster.js"></script>
  <!-- Lazy loading -->
</body>
</html>
文件controllers.js。AppCtrl的位置是:

'use strict';

/* Controllers */

angular.module('app.controllers', ['pascalprecht.translate', 'ngCookies'])
  .controller('AppCtrl', ['$rootScope', '$scope', '$translate', '$localStorage', '$window', 'toaster', 
    function(              $rootScope,   $scope,   $translate,   $localStorage,   $window,   toaster ) {
      // add 'ie' classes to html
      var isIE = !!navigator.userAgent.match(/MSIE/i);
      isIE && angular.element($window.document.body).addClass('ie');
      isSmartDevice( $window ) && angular.element($window.document.body).addClass('smart');

      $scope.toaster = {
          type: 'success',
          title: 'Title',
          text: 'Message'
      };
      $scope.pop = function(){
          toaster.pop($scope.toaster.type, $scope.toaster.title, $scope.toaster.text);
      };

  }])
这是我的app.js

'use strict';


// Declare app level module which depends on filters, and services
var app = angular.module('app', [
    'ngAnimate',
    'ngCookies',
    'ngResource',
    'ngStorage',
    'ui.router',
    'ui.bootstrap',
    'ui.load',
    'ui.jq',
    'ui.validate',
    'oc.lazyLoad',
    'pascalprecht.translate',
    'app.filters',
    'app.services',
    'app.directives',
    'app.controllers',
    'app.controller-university',
    'UniversityService',
    'toaster',
  ])
.run(
  [          '$rootScope', '$state', '$stateParams',
    function ($rootScope,   $state,   $stateParams) {
        $rootScope.$state = $state;
        $rootScope.$stateParams = $stateParams;        
    }
  ]
)
.config(
  [          '$stateProvider', '$urlRouterProvider', '$controllerProvider', '$compileProvider', '$filterProvider', '$provide',
    function ($stateProvider,   $urlRouterProvider,   $controllerProvider,   $compileProvider,   $filterProvider,   $provide) {

        // lazy controller, directive and service
        app.controller = $controllerProvider.register;
        app.directive  = $compileProvider.directive;
        app.filter     = $filterProvider.register;
        app.factory    = $provide.factory;
        app.service    = $provide.service;
        app.constant   = $provide.constant;
        app.value      = $provide.value;

        $urlRouterProvider
            .otherwise('/app/dashboard-v1');
        $stateProvider
            .state('app', {
                abstract: true,
                url: '/app',
                templateUrl: 'tpl/app.html',              
            })

            .state('app.dashboard-v1', {
                url: '/dashboard-v1',
                templateUrl: 'tpl/app_dashboard_v1.html'
            })

            /////////////////////////
            // University
            //////////////////////////////////////////
            .state('app.university', {
                url: '/universidade',
                template: '<div ui-view class="fade-in-up"></div>'
            })
            .state('app.university.list', {
                url: '/listar',
                templateUrl: 'tpl/university/list.html',
                controller: 'UniversityCtrl',
            })
            .state('app.university.create', {
                url: '/criar',
                templateUrl: 'tpl/university/create.html',
                controller: 'UniversityCtrl',            
            })
“严格使用”;
//声明依赖于筛选器和服务的应用程序级模块
var app=角度。模块('app'[
“ngAnimate”,
“ngCookies”,
“ngResource”,
“存储”,
“ui.router”,
“ui.bootstrap”,
“ui.load”,
“ui.jq”,
“ui.validate”,
“oc.lazyLoad”,
“pascalprecht.translate”,
'应用程序过滤器',
“应用程序服务”,
“应用程序指令”,
'应用程序控制器',
“应用控制器大学”,
“大学服务”,
“烤面包机”,
])
.跑(
[“$rootScope”、“$state”、“$stateparms”,
函数($rootScope、$state、$stateparms){
$rootScope.$state=$state;
$rootScope.$stateParams=$stateParams;
}
]
)
.config(
[“$stateProvider”、“$urlRouterProvider”、“$controllerProvider”、“$compileProvider”、“$filterProvider”、“$Provider”,
函数($stateProvider、$urlRouterProvider、$controllerProvider、$compileProvider、$filterProvider、$Provider){
//惰性控制器、指令和服务
app.controller=$controllerProvider.register;
app.directive=$compileProvider.directive;
app.filter=$filterProvider.register;
app.factory=$provide.factory;
app.service=$provide.service;
app.constant=$provide.constant;
app.value=$provide.value;
$urlRouterProvider
。否则(“/app/dashboard-v1”);
$stateProvider
.state('应用程序'{
摘要:没错,
url:“/app”,
templateUrl:'tpl/app.html',
})
.state('app.dashboard-v1'{
url:“/dashboard-v1”,
templateUrl:'tpl/app_dashboard_v1.html'
})
/////////////////////////
//大学
//////////////////////////////////////////
.州(“应用程序大学”{
url:“/universidade”,
模板:“”
})
.state('应用程序大学列表'{
url:“/listar”,
templateUrl:'tpl/university/list.html',
控制员:“大学培训中心”,
})
.state('app.university.create'{
url:“/criar”,
templateUrl:'tpl/university/create.html',
控制员:“大学培训中心”,
})

我使用toastr的方式如下:

在索引html中包含toastr:

之后,您可以将此模块插入任何控制器:

'use strict';

angular.module('app.controller-university', ['ngCookies'])
  .controller('UniversityCtrl', ['$stateParams', '$scope', '$window', 'University',
    function($stateParams, $scope, $window, University ) {

      $scope.pop();       

  }]);
angular.module('app').controller('myCtrl',function($scope,ngNotifier){
ngNotifier.notifyError($scope.validationError);
});
您可以将其引用到index.html页面并添加css,然后在页面底部配置指令,如下所示:

<toaster-container toaster-options="{
  'closeButton': false,
  'debug': false,
  'position-class': 'toast-top-right',
  'onclick': null,
  'showDuration': '200',
  'hideDuration': '1000',
  'timeOut': '5000',
  'extendedTimeOut': '1000',
  'showEasing': 'swing',
  'hideEasing': 'linear',
  'showMethod': 'fadeIn',
  'hideMethod': 'fadeOut'
}"></toaster-container>
angular.module('myApp').controller('myController', [
    '$scope', 'toaster', function($scope,toaster) {

    toaster.pop('success', 'message', 'some message');

}]);
正如文档所述,您可以使用多种选项:

toaster.pop('success', "title", 'Its address is https://google.com.', 15000, 'trustedHtml', 'goToLink');
toaster.pop('success', "title", '<ul><li>Render html</li></ul>', 5000, 'trustedHtml');
toaster.pop('error', "title", '<ul><li>Render html</li></ul>', null, 'trustedHtml');
toaster.pop('wait', "title", null, null, 'template');
toaster.pop('warning', "title", "myTemplate.html", null, 'template');
toaster.pop('note', "title", "text");
toaster.pop('success','title','其地址为https://google.com.“、15000、‘信任HTML’、‘goToLink’”;
toaster.pop('success','title','Render html',5000,'trustedHtml');
toaster.pop('error','title','Render html',null',trustedHtml');
pop('wait','title',null,null,'template');
toaster.pop('warning','title','myTemplate.html',null,'template');
toaster.pop(‘注释’、‘标题’、‘文本’);
看看这个

我喜欢的答案。一年后,我使用了一个更强大的工厂服务:

信守诺言
哪里是
AppCtrl
它是产品ctrl的父项吗?你也有必要的css吗?你能显示更多的代码吗?应用程序的其余部分?相关的HTML?相关的css?为什么不移动代码,在一个单独的服务中打开烤面包机,参数化调用,然后使用任何你想要的控制器…@JME我用mo更新了帖子有关我的应用程序的详细信息。toaster容器在index.html中?:/是的,没有什么害处,您可以在整个应用程序中使用它,这是设置它的更简单的方法,非常简单。请注意,配置中的“positionClass”:“toast top right”的类名不正确。它应该是“position class”:“toas”t-top-right.@YuMei我记得我从文档中获取了它,但它可能会随着新版本而更改,我会“以防万一”对它进行更新,这很好。一开始似乎有些过分,因为你只是在另一个服务中调用toaster方法,但它有很大的价值:如果你将来需要为了另一个库而放弃toaster,你就不会这么做了如果你直接打电话给烤面包机的话,我会去追每一个地方。
<toaster-container toaster-options="{
  'closeButton': false,
  'debug': false,
  'position-class': 'toast-top-right',
  'onclick': null,
  'showDuration': '200',
  'hideDuration': '1000',
  'timeOut': '5000',
  'extendedTimeOut': '1000',
  'showEasing': 'swing',
  'hideEasing': 'linear',
  'showMethod': 'fadeIn',
  'hideMethod': 'fadeOut'
}"></toaster-container>
angular.module('myApp').controller('myController', [
    '$scope', 'toaster', function($scope,toaster) {

    toaster.pop('success', 'message', 'some message');

}]);
toaster.pop('success', "title", 'Its address is https://google.com.', 15000, 'trustedHtml', 'goToLink');
toaster.pop('success', "title", '<ul><li>Render html</li></ul>', 5000, 'trustedHtml');
toaster.pop('error', "title", '<ul><li>Render html</li></ul>', null, 'trustedHtml');
toaster.pop('wait', "title", null, null, 'template');
toaster.pop('warning', "title", "myTemplate.html", null, 'template');
toaster.pop('note', "title", "text");
.factory('notifierService',function(toaster){
    return{
        notify: function(msg){
                toaster.pop('success', 'Update Successful', 'The ' + msg + ' setting was updated');
        },
        notifyError: function(msg){
                toaster.pop('error', 'Something Went Wrong', 'Please check with an administrator');
        },
        notifyInfo: function(msg){
                toaster.pop('info', 'Information', 'The ' + msg + 'just happened' );
        }
    };
})
.$promise.then(function() {
     notifierService.notify('email server');
 });