angularjs – 如何从Angular控制器或模块控制toastr选项(或全局
基于
prior SO article注入toastr到您的应用程序/控制器.我已经设置了我的app.js如下:
(function () { app = angular.module("app",['breeze.angular']).value('ngToastr',toastr); //added toaster as factory so it can be injected into any controller angular.module('app').factory('ngNotifier',function (ngToastr) { return { notify: function (msg) { ngToastr.success(msg); },notifyError: function (msg) { ngToastr.error(msg); },notifyInfo: function (msg) { ngToastr.info(msg); } } }); })(); 作为所述答案之一,我现在可以从任何控制器访问toastr控件. app.controller('reportController',function ($scope,reportLibraryService,ngNotifier,$log) { //report section var rvm = this; rvm.getReportList = GetReportList; rvm.onError = OnError; rvm.onReportComplete = OnReportComplete; $scope.userId = 1; GetReportList($scope.userId); function OnReportComplete(response) { $scope.reportList = response; ngNotifier.notify("Reports Loaded"); }; function OnError(reason) { $scope.error = "Could not fetch the data."; $log.error(reason); }; function GetReportList(userId) { $log.info("Getting reports for userid " + userId) reportLibraryService.getAllReports($scope.userId).then(rvm.onReportComplete,rvm.onError); }; }); 我的问题是如何覆盖默认选项?到目前为止,我尝试了两种方法.首先在html中添加一个带有选项集的toastr div,这不起作用.然后我尝试在工厂内添加它们,但它们也被忽略了. angular.module('app').factory('ngNotifier',function (ngToastr) { return { notify: function (msg) { ngToastr.success(msg); ngToastr.options = { "closeButton": false,"debug": false,"progressBar": false,"positionClass": "toast-bottom-right","onclick": null,"showDuration": "300","hideDuration": "1000","timeOut": "5000","extendedTimeOut": "1000","showEasing": "swing","hideEasing": "linear","showMethod": "fadeIn","hideMethod": "fadeOut" } },... 作为第二部分是为了使用正确的工具,或者我应该使用角度烤箱,因为这是一个角度应用程序?我目前在我的应用程序中的任何其他地方都没有任何jQuery依赖项. 谢谢你的任何建议 解决方法
对于那些试图覆盖特定通知的人,而不是简单地覆盖全局的默认值,我能够做到这一点,但有一个问题.我希望在成功消息消失时使错误持续存在(将timeOut设置为0).因此,对于正常的快乐路径通知,我只使用:
toaster.success('Nothing to see here folks','Move along'); 但是对于错误,我希望消息能够持久存在,这样他们就可以向经理展示,记下错误消息,等等.使用原始的toastr项目很容易,只需将覆盖选项的JSON对象作为最后一个参数传递,例如: toastr.error('Original toastr example','Click to dismiss',{timeOut: 0}); Angularjs-toaster不同,你将params传递给pop函数. 但这不起作用: toaster.pop({ type: 'error',title: 'Need More Information',body: 'Error 42 occurred,run for the hills!',timeOut: 0 }); 我查看了toaster.js代码(我使用的是版本0.4.15),看起来你可以将有序参数传递给pop而不是JSON对象.这个DID工作: toaster.pop( 'error','Need More Information','Error 42 occurred,0 ); 当然,我更喜欢将一个带有命名参数的对象传递给一堆未标记的参数.我仔细看了看他们的代码,看到他们将案例敏感度从timeOut更改为超时!这有效: toaster.pop({ type: 'error',timeout: 0 }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |