我建立一个简单的应用程序AngularJS,但我没能解决关于服务,NG-重复和动态添加数据的问题。
我想要做的
我的页面被分裂成几个countrollers。 在homeController
我有一个文本框和一个按钮。 当我按我做的API调用服务器上的按钮,服务器返回JSON和我的数据设置为Storage
服务。 在这部分一切正常-服务器返回的数据,因为它应该和数据被设置好的服务并将我得到console.log('Data set!');
在存储服务。 在第二控制器( slidesController
)我有一个ng-repeat
<div ng-controller="slidesCtrl">
<div ng-repeat="current in paragraphs"> test </div>
</div>
正如你可以在下面我的代码看, paragraphs
被绑定到Storage.data
价值slidesCtrl
因此,当用户在文本框中输入的东西,并按下按钮(homeCtrl),服务器应该将返回的数据Storage
服务,并采用NG-重复(slideCtrl)呈现数据。 如果我用硬编码[2,3,4,5]例如,一切都OK(我得到测试的4倍,因为NG重复的),在存储服务器中的数据,但如果数据采取API调用, NG-重复不工作。
码
App.controller('homeCtrl', function ($scope, $http, Api) {...
$scope.onprocess = function () {
$scope.loading = true;
Api(.....);
}
});
App.controller('slidesCtrl', function ($scope, Storage) {
$scope.paragraphs = Storage.data.paragraphs; // NOT WORKING IF DATA IS DYNAMICALLY ADDED
$scope.paragraphs = Storage.test; // IF DATA IS PREDEFINED EVERYTHING IS FINE
});
App.factory('Api', function ($http, Storage) {
return function (data) {
$http.post('/api', {
url: data.url,
analyze: 0
}).success(function (res) {....
Storage.set(res);....
}).error(function () {....
});
};
});
App.factory('Storage', function () {
var output = {};
var set = function (data) {
output = data;
console.log('Data set!');
};
return {
set: set,
data: output,
test: [1, 2, 3]
};
});