Я хочу сделать функцию «Вернуться при нажатии кнопки Cancel btn».
Это код просмотра
<div ng-controller = "goodCtrl">
<button class = "btn" ng-click = "cancel()">Cancel</button>
</div>
А это Js-код
1) контроллер
function goodCtrl($scope, $log, goodService)
$scope.cancel = function(){
$log.debug("goodCtrl - cancel");
goodService.cancel($scope);
};
2) сервис
function goodService($log, $state)
var methods = {
cancel: function($scope) {
$log.debug("goodService - cancel");
$state.go('goback');
}
}
3) модуль
angular
.module('goodmodule')
.controller('goodCtrl', goodCtrl)
.service('goodService', goodService)
Но у меня эта проблема
TypeError :
serviceName.functionName()is not a function
Хотя существует так много элементов управления, служб и методов, написанных подобным образом, добавленные мной служба и контроллер недоступны. Что я упустил?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Поскольку вы определили методы регистрации service, которые будут отображаться с использованием this
function goodService($log, $state) {
this.cancel = function ($scope) {
$log.debug("goodService - cancel");
$state.go('goback');
}
}
Я также рекомендовал бы вам использовать Аннотация зависимости, здесь я использовал аннотацию свойств $inject
goodCtrl.$inject = ['$scope', '$log', 'goodService'];
goodService.$inject = ['$log', '$state'];
Я решил проблему! это происходит из-за невозвращения методов. Благодарность!
@ zzangs33, тогда вы должны определить его как factory, см. stackoverflow.com/questions/14324451/…
В angularjs, чтобы определить услуга, вам необходимо назначить свойства в ключевом слове это в функции услуга. Поскольку в angular js-конструкторе функция используется для создания настраиваемой службы. Ниже приведен код обновленной службы.
function goodService($log, $state) {
this.cancel = function ($scope) {
$log.debug("goodService - cancel");
$state.go('goback');
}
}
Я решил проблему! это происходит из-за невозвращения методов. Благодарность!
Это буквально сообщение об ошибке? Не вижу в вашем коде ничего подобного