angular.js: 13424 Ошибка: [ng: areq] Аргумент 'fn' не является функцией, получил объект

0

Я новичок в программировании в 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>
  • 0
    что такое смесь?
Теги:
angularjs-components
angularjs-directive

2 ответа

0

Вы должны предоставлять функцию контроллера непосредственно вашему компоненту, а не через геттер углового контроллера:

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 к контроллеру, чтобы избежать потенциальных проблем с минимизацией.

0

@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");

Ещё вопросы

Сообщество Overcoder
Наверх
Меню