gpt4 book ai didi

javascript - Angular : Factory undefined inside Controller Method

转载 作者:行者123 更新时间:2023-11-30 12:31:56 25 4
gpt4 key购买 nike

当我在 Controller 中调用工厂方法时,它很好 - 但当我在 Controller 方法中调用工厂方法时,它是未定义的。

这是我的工厂:

app.factory('config', ['$http', '$interval', function($http, $interval, $scope) {
return {
lines: function() {
return $http({
url: appPath+'/config.php?data=lines',
method: 'JSON'
})
},
updateLines: function() {
$http.post(appPath+'/write.php?handler=update line', $scope.lines).
success(function(data, status, headers, config) {
return true;
}).error(function(data, status, headers, config) {
return false;
});
}
}
}]);

我的 Controller :

app.controller('lineController', function($scope, $interval, $http, config) {
// this works fine
config.lines().success(function(data) {
$scope.lines=data;
});

this.addToLine = function(line, customer) {

};

this.unassign = function(customer, line) {
var index = line.indexOf(customer);
line.splice(index, 1);

// Cannot read property 'lines' of undefined
config.updateLines();
};
});

在 Controller 范围内,我的工厂配置已定义,但是在方法中引用配置时,工厂未定义。 AngularJs 对我来说是新手,所以如果这是不好的做法,那么我会很感激被指出正确的方向。

谢谢

最佳答案

您收到的错误消息似乎是正确的。 $scope.lines 不存在于您的工厂中,而是存在于您的 Controller 中。所以你可能打算做的是将该值从 Controller 传递到工厂,如下所示

Controller 中的函数

config.updateLines($scope.lines);

工厂功能

updateLines: function(lines) {
$http.post(appPath+'/write.php?handler=update line', lines).
success(function(data, status, headers, config) {
return true;
}).error(function(data, status, headers, config) {
return false;
});
}

关于javascript - Angular : Factory undefined inside Controller Method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27450636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com