Javascript AngularJS:将变量传递到服务中

Javascript AngularJS:将变量传递到服务中,javascript,angularjs,Javascript,Angularjs,我创建了一个服务,它有一个简单计算的方法。它取一个值并将其平方。但是,我得到一个错误,说平方是未定义的,所以我猜我传递的值不正确 jsfid: var myApp=angular.module('myApp',[]); //指令('myDirective',function(){}); //工厂('myService',function(){}); /*函数MyCtrl($scope){ $scope.name='Superhero'; } */ myApp.controller('MyCtr

我创建了一个服务,它有一个简单计算的方法。它取一个值并将其平方。但是,我得到一个错误,说平方是未定义的,所以我猜我传递的值不正确

jsfid:

var myApp=angular.module('myApp',[]);
//指令('myDirective',function(){});
//工厂('myService',function(){});
/*函数MyCtrl($scope){
$scope.name='Superhero';
} */
myApp.controller('MyCtrl',['$scope',函数($scope,CalcService){
var cheese=CalcService.平方(2);
$scope.value=奶酪;
}]);
myApp.service('CalcService',函数(x){
this.square=函数(x){
变量y=x*x;
返回y;
}
});

你好,{{value}}!

您的服务应该是:

myApp.service('CalcService', function(){
return {
    square: function (x) {
        var y = x*x;
        return y;
    }
}});

您应该在控制器中注入服务。

您的服务应该类似于:

myApp.service('CalcService', function(){
return {
    square: function (x) {
        var y = x*x;
        return y;
    }
}});

您应该在控制器中注入服务。

我认为您没有以正确的方式将服务注入控制器。请检查代码段


你好,{{value}}!
var myApp=angular.module('myApp',[]);
//指令('myDirective',function(){});
//工厂('myService',function(){});
/*函数MyCtrl($scope){
$scope.name='Superhero';
} */
myApp.service('CalcService',function()){
this.square=函数(x){
变量y=x*x;
返回y;
}
});
myApp.controller('MyCtrl',['$scope','CalcService',函数($scope,CalcService){
var cheese=CalcService.平方(2);
$scope.value=奶酪;
}]);

我认为您没有以正确的方式将服务注入控制器。请检查代码段


你好,{{value}}!
var myApp=angular.module('myApp',[]);
//指令('myDirective',function(){});
//工厂('myService',function(){});
/*函数MyCtrl($scope){
$scope.name='Superhero';
} */
myApp.service('CalcService',function()){
this.square=函数(x){
变量y=x*x;
返回y;
}
});
myApp.controller('MyCtrl',['$scope','CalcService',函数($scope,CalcService){
var cheese=CalcService.平方(2);
$scope.value=奶酪;
}]);

请参见此处,您错过了
CalcService
控制器初始化中的注入:

myApp.controller('MyCtrl', ['$scope', 'CalcService', function($scope, CalcService) {
var cheese = CalcService.square(2);
$scope.value = cheese;

}]);

请参见此处,您错过了
CalcService
inject-in-controller初始化:

myApp.controller('MyCtrl', ['$scope', 'CalcService', function($scope, CalcService) {
var cheese = CalcService.square(2);
$scope.value = cheese;

}]);

您没有插入“CalcService

myApp.controller('MyCtrl',['$scope','CalcService',函数($scope,CalcService){
}]);

您错过了注入“CalcService

myApp.controller('MyCtrl',['$scope','CalcService',函数($scope,CalcService){
}]);

在控制器中,您没有注入CalcService,而是将参数
x
添加到服务函数中。你应该移除它。检查这个更新的JSFIDLE:啊,好的,语法错误,所以注入发生在引号的开头,为什么需要把它放在函数param中呢?这是为了文件缩小。查看此帖子:。您可以像
myApp.controller('MyCtrl',function($scope,CalcService){}那样编写它
但是当你缩小文件时,这将不起作用。在你的控制器中,你没有注入CalcService,而是将参数
x
添加到服务函数中。你应该删除它。检查这个更新的jsFiddle:啊,好的,语法错误,所以注入是以引号开始的,为什么需要将它放在函数中这个参数是用来缩小文件的。检查这个帖子:。你可以像
myApp.controller('MyCtrl',function($scope,CalcService){}
那样编写它,但是当你缩小文件时,它就不起作用了。