从父控制器发出的调用指令事件处理程序

时间:2015-04-02 14:30:40

标签: angularjs angularjs-directive angularjs-scope angularjs-view

我有一个要求,比如我想从控制器发出一个事件,并且事件处理程序存在于指令控制器中(即子控制器)。

请找到以下代码:

<div ng-app="myApp" ng-controller="appController">
   <div test></div>
</div>


/* Fiddle to call views directive event from the view controller */

var app = angular.module('myApp', []);

app.controller('appController', function ($scope, $timeout) {
console.log('Inside Controller');

// If timeout is removed test-event handler will not be called as test controller is not yet executed by the time event was raised

  //$timeout(function () {
    $scope.$broadcast('test-event');
  //});
});

app.directive('test', function () {
   return {
      restrict: 'A',
      controller: function ($scope) {
          console.log("Inside test directive controller");
          $scope.$on('test-event', function () {
              console.log("Test event fired");
          });
      }
   };
});

如果我在上面的代码中取消注释$ timeout,我的代码工作正常。但我想知道一些更好的解决方案,而不是使用上述解决方案。

我在视图中的项目中有这个场景,我有一个视图控制器和带有事件处理程序的指令,并从视图控制器发出事件。

0 个答案:

没有答案