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); 
};