Javascript 如何获取函数中值发生变化的变量的值
如何获取函数中值发生变化的变量的值例如,我的var total在load:函数中改变它的值,但我想在序列名中使用结果Javascript 如何获取函数中值发生变化的变量的值,javascript,jquery,angularjs,function,variables,Javascript,Jquery,Angularjs,Function,Variables,如何获取函数中值发生变化的变量的值例如,我的var total在load:函数中改变它的值,但我想在序列名中使用结果 var total = 0; $scope.chartMedida = { dataSource: { load: function () { var def = $.Deferred(); $http({ method: 'GET', url: ng.api + '/llantas/graficos
var total = 0;
$scope.chartMedida = {
dataSource: {
load: function () {
var def = $.Deferred();
$http({ method: 'GET', url: ng.api + '/llantas/graficos/'+3}).success(function (data) {
def.resolve(data.data);
for(var i = 0; i<data.data.length; i++){
total = data.data[i].cantidad + total;
}
});
return def.promise();
}
},
palette: 'Soft',
series: {
argumentField: 'medida',
valueField: 'cantidad',
name:total.toString(),
type: 'bar'
},
title: {
text: 'Existencias por medida',
fontSize:4
},
tooltip: {
enabled: true
},
label: {
visible: true
}
};
var总计=0;
$scope.chartMedida={
数据源:{
加载:函数(){
var def=$.Deferred();
$http({method'GET',url:ng.api+'/llantas/graficos/'+3})。成功(函数(数据){
定义解析(data.data);
对于(var i=0;i试试这个
$scope.chartMedida = {
total:0,
dataSource: {
load: function () {
var def = $.Deferred();
$http({ method: 'GET', url: ng.api + '/llantas/graficos/'+3}).success(function (data) {
def.resolve(data.data);
for(var i = 0; i<data.data.length; i++){
$scope.chartMedida.total += data.data[i].cantidad;
}
});
return def.promise();
}
},
试试这个
series: function() {
return {
argumentField: 'medida',
valueField: 'cantidad',
name:total,
type: 'bar'
}
}
这在测试页面上对我有效,但我必须使用虚拟数据
console.log($scope.chartMedida.series());
我认为内部值是在init上设置的,然后不会更改。这样,当请求时它会得到值。这里有一个解决方案。创建一个服务,并让服务在返回get数据时设置值
我做了一个演示来演示设置。为了演示的目的,我去掉了处理逻辑,因为我的get数据只是一个字符串
var app = angular.module('plunker', []);
app.service('myService', function($http) {
this.dataSource = function(inObj) {
$http({
method: 'GET',
//url: ng.api + '/llantas/graficos/' + 3
url: 'myData.html'
})
.success(function(data) {
var total = "";
//for (var i = 0; i < data.data.length; i++) {
// total = data.data[i].cantidad + total;
//}
total = data;
inObj.chartMedida.series.name = total;
})
.error(function(data, status) {
alert("error" + data, status);
});
return "...waiting..."
};
});
app.controller('MainCtrl', function($scope, myService) {
$scope.chartMedida = {
palette: 'Soft',
series: {
argumentField: 'medida',
valueField: 'cantidad',
name: myService.dataSource($scope),
type: 'bar'
},
title: {
text: 'Existencias por medida',
fontSize: 4
},
tooltip: {
enabled: true
},
label: {
visible: true
}
};
});
var-app=angular.module('plunker',[]);
app.service('myService',函数($http){
this.dataSource=函数(inObj){
$http({
方法:“GET”,
//url:ng.api+'/llantas/graficos/'+3
url:'myData.html'
})
.成功(功能(数据){
var total=“”;
//对于(var i=0;i
如果您不想创建服务,这里有另一个答案
这一个设置了一个iife内联函数来做同样的事情。它只是看起来更混乱。事实上,为chartMedida建立一个工厂并将其完全从控制器中取出会更干净
app.controller('MainCtrl', function($scope, $http) {
$scope.chartMedida = {
palette: 'Soft',
series: {
argumentField: 'medida',
valueField: 'cantidad',
name: function() {
$http({
method: 'GET',
//url: ng.api + '/llantas/graficos/' + 3
url: 'myData.html'
})
.success(function(data) {
var total = "";
//for (var i = 0; i < data.data.length; i++) {
// total = data.data[i].cantidad + total;
//}
total = data;
$scope.chartMedida.series.name = total;
})
.error(function(data, status) {
alert("error" + data, status);
});
return "...waiting...";
}(),
type: 'bar'
},
title: {
text: 'Existencias por medida',
fontSize: 4
},
tooltip: {
enabled: true
},
label: {
visible: true
}
};
});
app.controller('MainCtrl',函数($scope,$http){
$scope.chartMedida={
调色板:“软”,
系列:{
argumentField:“medida”,
valueField:“cantidad”,
名称:函数(){
$http({
方法:“GET”,
//url:ng.api+'/llantas/graficos/'+3
url:'myData.html'
})
.成功(功能(数据){
var total=“”;
//对于(var i=0;i
Setseries.total
在Ajax回调中。我猜Felix的意思是series.name
,但你应该已经理解了他的意思(var I=0;iNope不工作“无法读取未定义的属性'total'”让我看得更深入一点
app.controller('MainCtrl', function($scope, $http) {
$scope.chartMedida = {
palette: 'Soft',
series: {
argumentField: 'medida',
valueField: 'cantidad',
name: function() {
$http({
method: 'GET',
//url: ng.api + '/llantas/graficos/' + 3
url: 'myData.html'
})
.success(function(data) {
var total = "";
//for (var i = 0; i < data.data.length; i++) {
// total = data.data[i].cantidad + total;
//}
total = data;
$scope.chartMedida.series.name = total;
})
.error(function(data, status) {
alert("error" + data, status);
});
return "...waiting...";
}(),
type: 'bar'
},
title: {
text: 'Existencias por medida',
fontSize: 4
},
tooltip: {
enabled: true
},
label: {
visible: true
}
};
});