Я новичок в программировании в html/JS/AngularJS. Я пытаюсь реализовать простой угловой компонент, но я продолжаю получать ошибки. Я просмотрел другие ответы и не могу найти решение, почему эта простая реализация создает ошибку в консоли (ошибка упоминается в заголовке). пожалуйста помоги. изображение консоли
var myApp = angular.module('RingShopApp', []);
function appctrlcontroller($scope) {
}
myApp.controller('appctrl', appctrlcontroller);
console.log("appctrl done");
myApp.component('ringtabs', {
template: "<p>sdfsdfsdfsdfsdfdf</p>",
// templateUrl: 'html/Directives/tabs.html',
controller: myApp.controller('appctrl')
});
console.log("ringtabs component");
<!DOCTYPE html>
<html >
<head>
</head>
<body ng-app="RingShopApp">
<ringtabs></ringtabs>
<script src='https://ajax.googleapis.com/ajax/libs/angularjs/1.5.3/angular.js'></script>
<script src='https://ajax.googleapis.com/ajax/libs/angularjs/1.5.3/angular-animate.min.js'></script>
<script src='https://ajax.googleapis.com/ajax/libs/angularjs/1.5.3/angular-route.min.js'></script>
<script src='https://ajax.googleapis.com/ajax/libs/angularjs/1.5.3/angular-aria.min.js'></script>
<script src='https://ajax.googleapis.com/ajax/libs/angularjs/1.5.3/angular-messages.min.js'></script>
<script src="js/index.js"></script>
</body>
</html>
Вы должны предоставлять функцию контроллера непосредственно вашему компоненту, а не через геттер углового контроллера:
var myApp = angular.module('RingShopApp', []);
myApp.controller('appcontroller', appcontroller);
myApp.component('ringtabs', {
template: "<p>sdfsdfsdfsdfsdfdf</p>",
controller: 'appcontroller'
});
function appcontroller($scope) {
...
}
appcontroller.$inject = ['$scope'];
Будьте осторожны, чтобы добавить свойство $ inject к контроллеру, чтобы избежать потенциальных проблем с минимизацией.
@Sajeetharan отправил здесь ответ, который решил проблему, но он удалил ее из комментариев. Его ответ заключался в том, что я должен изменить ".component" на ".directive", потому что это была смесь углового2 и углового. Это код, который был отредактирован. Кажется, что он работает нормально:
var myApp = angular.module('RingShopApp', []);
function appctrlcontroller($scope) {
}
myApp.controller('appctrl', appctrlcontroller)
.directive('ringtabs', function(){
return {
templateUrl: 'html/Directives/tabs.html'
//controller: myApp.controller('appctrl')
};
});
console.log("ringtabs component");