如何将json文件中的数据提取到对象数组中,并在两个控制器之间共享
How to fetch data from a json file into an object array and sharing it between two controllers
我从JSON文件中获取数据并将其保存在对象数组中。然后我想在两个控制器之间共享数组,一个控制器在页面中显示数据,而另一个控制器可以使用模态向数组添加对象。但问题是我无法将数据呈现到页面中。对象数组为空。
这是服务。
.service('Faq', function ($http) {
this.faqList = [];
$http.get('/Json/faq.json').then(function (result) {
// process your results here
this.faqList = result.data;
});
this.getFaqs = function (){
return this.faqList;
}
this.addfaq = function (obj) {
this.faqList.push(obj);
};
})
用于渲染数据的控制器
.controller('AppCtrl', function ($scope, $modal, Faq) {
$scope.filteredFaqData = [];
$scope.currentPage = 1;
$scope.numPerPage = 5;
$scope.maxSize = 5;
$scope.faqData = [];
$scope.faqData = Faq.getFaqs();
$scope.$watch('currentPage + numPerPage', function () {
var begin = (($scope.currentPage - 1) * $scope.numPerPage)
, end = begin + $scope.numPerPage;
$scope.filteredFaqData = $scope.faqData.slice(begin, end);
});
$scope.show = function () {
$modal.open({
templateUrl: "faqAddUpdate.html",
controller: "faqctrl"
});
};
$scope.deleteFaq = function (id) {
var l = $scope.faqData.length;
for (var i = 0; i < l; i++) {
if ($scope.faqData[i].id == id) {
$scope.faqData.splice(i, 1);
break;
}
}
console.log(id);
};
})
模态控制器
.controller('faqctrl', function ($scope, $modalInstance, Faq) {
$scope.question = '';
$scope.id = '';
$scope.answer = '';
$scope.editFaq = function (id) {
$scope.divFaq = true;
$scope.faqs = [];
Faq.getData().then(function (msg) {
$scope.faqs = msg.data;
var l = $scope.faqs.length;
for (var i = 0; i < l; i++) {
if ($scope.faqs[i].id == id) {
$scope.question = $scope.faqs[i].question;
$scope.id = $scope.faqs[i].id;
$scope.answer = $scope.faqs[i].answer;
$scope.Action = "Update";
}
}
});
};
$scope.AddUpdateFAQ = function () {
var faq = {
id: $scope.id,
question: $scope.question,
answer: $scope.answer
};
Faq.addfaq(faq);
console.log(faq);
$modalInstance.close();
};
$scope.Cancel = function () {
$modalInstance.dismiss();
};
});
问题出在服务上,因为最初当我得到这样的阵列时
this.faqList = $http.get('/Json/faq.json');
数据正在填充,但当我更新时,它抛出错误this.faqlist.push不是一个函数,然后StackOverflow上的某个人告诉我,上面的行将数组更改为promise,所以我进行了更改,但它现在没有填充数据。
您应该更改填充数组的方式:
.service('Faq', function ($http) {
var self = this;
this.faqList = [];
$http.get('/Json/faq.json').then(function (result) {
// process your results here
// this.faqList = result.data;
result.data.forEach(function(item){
self.addfaq(item)
})
});
this.getFaqs = function() {
return this.faqList;
}
this.addfaq = function(obj) {
this.faqList.push(obj);
};
})
这样做.faqlist=result.data会更改对数组的引用,因此您会在控制器中丢失它
相关文章:
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- 在控制器和数据对象之间同步数据
- Nodejs API控制器,用于在API之间切换
- 在控制器之间切换,可以't更新视图
- 使用服务(AngularJS)在控制器之间共享数据
- 通过共享服务在两个不同ng应用程序中的控制器之间共享数据
- 在控制器之间传递变量的最佳方式
- 使用Angularjs在两个不同页面的控制器之间共享数据
- 在Angular Bootstrap Modal和父控制器之间共享作用域
- 2ng控制器,并且需要在控制器之间共享数据
- 在控制器angular js之间共享数据
- 访问angularJS中页面之间的控制器
- 如何将json文件中的数据提取到对象数组中,并在两个控制器之间共享
- 控制器和支持路由之间的角度保持选择
- 如何在多个控制器之间封装设置$scope值
- 在angularJS中使用模态窗口时,在控制器之间共享对象数组
- 在角度上不同控制器之间共享状态
- AngularJS:如何在控制器之间传递变量
- 在OnsenUI+AngularJS+PhoneGap中的控制器之间传递数据
- 使用 AngularJS 在控制器之间传递变量