我正在尝试调用Web服务,从中接收数据并显示在列表中。我正在使用指令。
JSON
加载数据。哪个工作正常。我能够加载数据。但它没有在列表中显示为什么? 这是我的代码: https://jsfiddle.net/8fjhLqnw/10/
.controller('he', function($http, $scope, sharedData) {
var h = this;
h.referesh=function(){
sharedData.get();
}
h.delete = function() {
sharedData.delete()
}
});
更新请参阅plunker
http://plnkr.co/edit/iMpStNneDmIsabTnFqpP?p=preview
我只需要点击刷新按钮即可加载 data.json 的数据并显示在列表表单上
答案 0 :(得分:0)
更新了fiddle
问题是您正在刷新刷新调用中对sharedData.data的引用。 f控制器在刷新数据之前将自身绑定到sharedData.data(即vm.data = sharedData.data),并且永远不会更新vm.data引用(始终指向原始已删除的数组)。要修复,请构建对sharedData本身的引用,并从模板中访问data属性:
// continued off module definition
.directive('tm', function() {
// reference vm.sharedData.data in the template
return {
restrict: 'E',
template: '<div><ul><li ng-repeat="n in vm.sharedData.data">{{n.name}}</li></ul></div>',
scope: {},
controller: 'f',
controllerAs: 'vm'
};
}).controller('f', function($http, $scope, sharedData) {
var vm = this;
// initialize shared data
sharedData.get().then(function(){
vm.sharedData = sharedData;
});
刷新数据时,sharedData的data属性将重置并由模板拾取,因为作用域引用了sharedData引用(不会更改)。模板将看到sharedData内部的任何更改(刷新的数据属性)。