Javascript AngularJS:关于实例化服务
我有一个控制器:Javascript AngularJS:关于实例化服务,javascript,angularjs,Javascript,Angularjs,我有一个控制器: .controller('myCtrl', function (myService) { var that = this; that.myService = myService; }); 服务: .service('myService', function (DataFactory) { var listData = []; var mockList = ['aaa','bbb','ccc']; var handleData
.controller('myCtrl', function (myService) {
var that = this;
that.myService = myService;
});
服务:
.service('myService', function (DataFactory) {
var listData = [];
var mockList = ['aaa','bbb','ccc'];
var handleData = function (data) {
listData = data;
};
和html:
<button ng-click="myCtrl.myService.handleData()">Go</button>
<div ng-repeat="item in myCtrl.myService.listData>
{{ item }}
</div>
改变
item in myCtrl.myService.listData to item in myCtrl.list
整个事情都停止了
你能给我解释一下吗?我觉得我错过了一些真正基本的东西,我需要开始搜索更多信息的方向
扑通一声:
这里有一个例子
您的错误想法是,您希望在通过单击handleData()
填充基础列表时,会更新.myService
但是,请查看您的handleData()
实现:
listData = data;
您没有改变初始列表,您指向的是另一个列表(因此引用了一个不同的列表),因为它充当了一个完整的重新分配
因此,解决这个问题的一种方法是改变初始列表:
var handleData = function (data) {
// populating elements into the initial list
Array.prototype.push.apply(listData, mockedList);
};
var handleData = function (data) {
// populating elements into the initial list
Array.prototype.push.apply(listData, mockedList);
};