我想做“取消点击后返回”功能。
这是视图代码
<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()
不是函数
虽然有这么多的控件,服务,方法,但我添加的服务和控制器都不可用。我错过了什么?
正如你已经使用service
定义了要暴露的this
寄存器方法
function goodService($log, $state) {
this.cancel = function ($scope) {
$log.debug("goodService - cancel");
$state.go('goback');
}
}
我还建议你使用Dependency Annotation,这里我使用了$inject
属性注释
goodCtrl.$inject = ['$scope', '$log', 'goodService'];
goodService.$inject = ['$log', '$state'];
在angularjs中,要定义服务,您必须在服务函数中为此关键字指定属性。因为在角度js中构造函数用于创建自定义服务.Below代码是您更新的服务代码。
function goodService($log, $state) {
this.cancel = function ($scope) {
$log.debug("goodService - cancel");
$state.go('goback');
}
}