我正在尝试将 id 从控制器 1 绑定到 myservice 函数之一。但我得到以下错误
TypeError: _this.dashboardService.chartid 不是函数
请找到我的代码片段
服务1.js
var Service1 = function (
$http) {
this.$http = $http;
};
Service1.prototype.chartid = function (id) {
return id;
};
appmodule.service('dashboardService', DashboardService);
控制器1.js
Controller1.prototype.Chart = function (data) {
_this.service1.chartid(data.key);
};
您尚未以更经典的方式将服务注入控制器中:
var controller1=angular.module('controllermodule',[]);
controller1.controller('{name of the controller}',function({service to inject}){}
Javascript 原型函数可以在其对象上调用。添加原型时,您正在定义其函数在对象上可用的类。
例如
var Service = function() {};
Service.prototype.callMePlease = function() {
console.log('ok Calling now');
return 'Just called';
};
console.log('callMePlease is undefined on Service or is it ? Service.callMePlease='+Service.callMePlease);
var serviceInstance = new Service();
console.log('callMePlease is NOT undefined on serviceInstance or is it ? serviceInstance .callMePlease='+serviceInstance.callMePlease);
var didYouCall = serviceInstance.callMePlease();
console.log('didYouCall='+didYouCall);
鉴于此,您实际上需要 service1 的实例。
最好按照官方的angularjs DI文档遵循AngularJS注入模型,以允许AngularJS为您创建实例。
但是,您可以使用编程方法(不建议使用)。在您的情况下
Controller1.prototype.Chart = function (data) {
var myService1 = $injector.get('service1');
myService1.chartid(data.key);
};