Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 角度js-使用服务_Angularjs_Angularjs Directive_Angularjs Service - Fatal编程技术网

Angularjs 角度js-使用服务

Angularjs 角度js-使用服务,angularjs,angularjs-directive,angularjs-service,Angularjs,Angularjs Directive,Angularjs Service,菜单控制器: // Left Menu Start 'use strict'; angular.module("MainApp") .controller('LeftMenuCtrl', function ($scope, $rootScope, actionCall) { $scope.notify = {}; $scope.actionUrlCall = function(action) { actionCall.actionUrlCall(

菜单控制器:

// Left Menu Start
'use strict';
 angular.module("MainApp")
   .controller('LeftMenuCtrl', function ($scope, $rootScope, actionCall) {

    $scope.notify = {};
    $scope.actionUrlCall = function(action)
    {
        actionCall.actionUrlCall(action, function(response){
            $scope.notify = actionCall.notify;
            console.log($scope.notify);
        });
    };
});
现在视图中有几个html页面:

它们中的每一个都有以下通知指令:

<div class="col-sm-12">
    <notification type="success"></notification>
    <notification type="error"></notification>
    <notification type="warning"></notification>
</div>
它根据actionCall服务的输出显示通知


我有控制台日志console.log$scope.notify;我得到了要求的结果。问题是我不知道如何与不同控制器和不同范围的不同页面上的指令进行通信。

好的,这就是我最终解决问题的方法

我创建了一个新的servicemenu-service.js:

'use strict';
angular.module("MainApp")
.factory('menuClick', function($rootScope) {
var sharedService = {};
sharedService.notify = {};

   sharedService.prepForBroadcast = function(msg) {
    this.broadcastItem();
};
   sharedService.broadcastItem = function() {
    $rootScope.$broadcast('handleBroadcast');
};
   return sharedService;
});
然后,我在菜单控制器中注入了名为menuClick的服务,并在其中添加了一些行:

 angular.module("MainApp")

.controller('LeftMenuCtrl', function ($scope, $rootScope, menuClick) {
    $scope.handleMenuClick = function(action) {
    menuClick.notify.warningNotify =  true;
    menuClick.notify.errorNotify =  true;
    menuClick.notify.successNotify =  true;
    if(!action.IsEnabled)
    {
        menuClick.notify.warningNotify = false;
        menuClick.notify.warningMessage = "This operation is disabled ( "+action.Text+" )";
        menuClick.prepForBroadcast(menuClick.notify);
    }
    };
   });
然后,我将menuClick注入到需要收听广播数据的控制器中,并在这些控制器中添加了以下行:

 $scope.$on('handleBroadcast', function() {
     $scope.notify = menuClick.notify;
 });

它开始工作了

你想过使用$broadcast吗?@olu:任何简单的例子都能让我领先一步。感谢在控制器中使用$rootScope.$broadcast在应用程序中广播事件。在指令中使用$rootScope.on来注册事件。@olu:Nice。谢谢你,伙计!