Как сделать чтобы при нажатии на кнопку метод 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');
}
});