gpt4 book ai didi

javascript - AngularJS 在 Controller 之间传递数据失败

转载 作者:行者123 更新时间:2023-12-03 07:29:54 24 4
gpt4 key购买 nike

正如我在其他帖子中提到的,我对 AngularJS 还很陌生,并且在理解它的来龙去脉方面遇到了很多困难。

我已经达到了一个阻塞点,我试图在一个存储对象列表的 Controller 和另一个用户可以在不同 View 中编辑单个对象的 Controller 之间传递数据。

我尝试使用自己的工厂,但是如果我引用index.html 文件中的服务(它是单页应用程序),我会收到有关我的 NavigationController 状态的错误,该导航 Controller 不使用相关服务。

我的工厂代码如下:

var app = angular.module('MyAppName',[]);

app.factory('CharacterData', function() {
var data = {
Name: '',
Description: '',
TotalExperience: 0,
RemainingExperience: 0
}

return {
getName: function() {
return data.Name;
},

setName: function(name) {
data.Name = name;
},

getDescription: function() {
return data.Description;
},

setDescription: function(description) {
data.Description = description;
},

getTotalExperience: function() {
return data.TotalExperience;
},

setTotalExperience: function(totalxp) {
data.TotalExperience = totalxp;
},

getRemainingExperience: function() {
return data.RemainingExperience;
},

setRemainingExperience: function(exp) {
data.RemainingExperience = exp;
}
};
});

我已将此工厂注入(inject)到需要它的两个 Controller (CharacterListController 和CharacterEditController)中,代码如下:

(function(){
angular.module('MyAppName')
.controller('CharacterEditController', ['$scope', '$state', '$http', '$location', function ($scope, $state, $http, $location, CharacterData){

/**
*
*/
$scope.readCharacter = function() {
$scope.currentCharacter.name = CharacterData.getName();
$scope.currentCharacter.description = CharacterData.getDescription();
$scope.currentCharacter.totalExperience = CharacterData.getTotalExperience();
$scope.currentCharacter.remainingExperience = CharacterData.getRemainingExperience();
}

...
}]);
}());

以及传递相关字符的列表 Controller :

(function(){
angular.module('TimeWaste')
.controller('CharacterListController',['$scope', '$state', '$http','$location', function($scope, $state, $http, $location, CharacterData){

.... more functions ...

$scope.updateCurrentCharacter = function(req, res) {

CharacterData.setName($scope.character.name);
CharacterData.setDescription($scope.character.description);
CharacterData.setTotalExperience($scope.character.totalExperience);
CharacterData.setRemainingExperience($scope.character.remainingExperience);

$location.path('/edit-character');
}

}]);

}());

我不明白的是 NavigationController 必须对传递数据做什么。我已经像这样引用了我的服务:

What I get when the service is added to index.html

我不明白它是如何工作的或者为什么会出现这个问题。我一直在关注教程,主要是为了我一直在做的事情,但正如我所说,我仍然在我的 MEAN Stack/Angular ABC 中

如有任何帮助,我们将不胜感激。

最佳答案

您没有正确注入(inject)它:

['$scope', '$state', '$http', '$location', 'CharacterData', function ($scope, $state, $http, $location, CharacterData){}]

关于javascript - AngularJS 在 Controller 之间传递数据失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35845913/

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