@FBI_Agent

Как вызвать метод контроллера вне компонента?

Как сделать чтобы при нажатии на кнопку метод addRandomEmail() выполнялся?
версия angular 1.6

<body ng-app="App">
   <my-componentr></my-component>
   <button ng-click="addRandomEmail()">test</button>
</body>


angular.module('myComponent').
	component('myComponent', {
		template: `
     <div class="editor">
	  {{$ctrl.email}}
   </div>`,
		controller: function myController() {
			this.email = '';
			this.randomEmails = [
				'user@mail.com',
				'user@mail.ru',
				'user@test.ru',
				'user@bla.com',
				'user@tra.trr',
				'user@gmail.com'
			];
			this.addRandomEmail = function () {
				let random = Math.random() * this.randomEmails.length;
				random = Math.floor(random);

				this.email = this.randomEmails[random];
			}
		};
	}
  });


UPD
Получилось запустить.
Спасибо SergeyBugai за ссылку
Может можно это реализовать лучше, если так напишите.

<body ng-app="App" ng-controller="parentCtrl">
   <my-componentr></my-component>
   <button ng-click="RandomEmail();">test</button>
</body>


angular.module('myComponent').
   component('myComponent', {
      template: `
     <div class="editor">
	  {{$ctrl.email}}
   </div>`,
      controller: function myController() {
         this.email = '';
         this.randomEmails = [
            'user@mail.com',
            'user@mail.ru',
            'user@test.ru',
            'user@bla.com',
            'user@tra.trr',
            'user@gmail.com'
         ];
         this.addRandomEmail = function () {
            let random = Math.random() * this.randomEmails.length;
            random = Math.floor(random);

            this.email = this.randomEmails[random];
         }
      };

      $scope.addRandomEmail = this.addRandomEmail;
      $scope.randomEmails = this.randomEmails;
      $scope.email = this.email;

      $scope.$on('randomEmail', function (event, fromParent) {
         $scope.addRandomEmail();
      });
   }
  });

angular.module('emailsEditor').controller('parentCtrl', function ($scope) {
  $scope.randomEmail = function () {
    $scope.$broadcast('randomEmail');
  }
});
  • Вопрос задан
  • 767 просмотров
Пригласить эксперта
Ответы на вопрос 3
RTW
@RTW
Форкаю, читаю, употребляю
Можешь сделать тогда фабрику или сервис и из них уже доставать нужные тебе методы.
Ответ написан
severus256
@severus256
Code everywhere....
Через директиву ng-controller не работает?
Типа:
<body ng-app="App" ng-controller="myController">
   <my-componentr></my-component>
   <button ng-click="addRandomEmail()">test</button>
</body>
Ответ написан
@SergeyBugai
Почему кнопку не зделать в компоненте?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы