如何在 angularjs 中的控制器-服务-控制器之间传递数据



我正在尝试将 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);
};

相关内容

  • 没有找到相关文章