以下是我的角色应用。
(function () {
"use strict";
angular
.module("app.core", ['ngRoute'])
.controller("dataCtrl", dataCtrl);
dataCtrl.$inject = ['$scope','$location','dataService'];
/* @ngInject */
function dataCtrl($scope, $location, dataService) {
var methods = {
'Get': GetCustomers,
}
return methods.Get();
function GetCustomers(id) {
alert('test');
var scarData = dataService.read(id, "").then(function (data, err) {
console.log(data);
});
}
}
}());
服务
(function () {
'use strict';
angular
.module('app.service')
.factory('dataService', dataService);
dataService.$inject = ['$http', '$q'];
function dataService($http, $q) {
var service = {
create: create,
read: read,
update: update,
remove: remove
}
return service;
function read(id,type) {
return
$http.get("APIURL")
.then(success)
.catch(exception);
function success(response) {
}
function exception(ex) {
}
}
function create() {}
function update() {}
function detete() {}
}
})`
从控制器调用服务时,我收到以下错误。
TypeError:无法读取属性'然后'未定义的
另外,请建议在页面加载时调用控制器的get函数的更好方法。
答案 0 :(得分:3)
您的问题是由于Automatic Semicolon Insertion导致您的退货声明提前结束。
由于ASI,这个:
return
$http.get("APIURL")
.then(success)
.catch(exception);
被评估为好像它被写成:
return;
$http.get("APIURL")
.then(success)
.catch(exception);
请注意,您的$ http调用后返回空值。因此,您的服务方法返回undefined,并且您的$ http调用实际上从未发生过。
解决方案是不在return和$ http
之间添加换行符 return $http.get("APIURL")
.then(success)
.catch(exception);