AngularJS:关于实例化服务
AngularJS: about instantiating the service
我有一个控制器:
.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>
问题是:我有一个列表,其中包含来自myService.listData的数据,并且(使用上面的所有代码)它按预期工作 - 通过在单击按钮时更新列表。
我补充了:
that.list = myService.listData
并更改了
item in myCtrl.myService.listData to item in myCtrl.list
整个事情停止工作。
你能给我解释一下吗?我觉得我错过了一些非常基本的东西,我需要方向开始搜索更多信息。
扑通:工作一破碎
这是一个工作 plunker。
您的误解是您希望在单击时填充基础列表时that.myService
更新handleData()
。
但是,请查看您的handleData()
实现:
listData = data;
您不会改变初始列表,而是指向另一个列表(因此引用了一个不同的列表),因为它充当了完整的重新分配!
因此,解决问题的一种方法是改变初始列表:
var handleData = function (data) {
// populating elements into the initial list
Array.prototype.push.apply(listData, mockedList);
};
相关文章:
- 如何在GoogleWeb工具包(GWT)中从JSNI调用接口(实例化)
- 如何在用户输入时实例化数组
- 在requirejs中共享实例化对象
- Mongoose TypeError:实例化模式类型的对象时,对象不是函数
- Angular重命名模块后未能实例化模块
- Backbone relational无法实例化两个RelationalModel对象
- 我应该如何用javascript实例化这个日期
- AngularJS出错-无法实例化模块
- 谷歌地图重叠MarkerSpiderfier实例化问题
- 未捕获错误:由于,[$injector:moduler]未能实例化模块polmgr
- ngRoute不是因果报应实例化的
- JavaScript 中的动态实例化
- 在文本框上绑定谷歌地点自动完成,而无需实例化谷歌地图
- UI5 路由不实例化视图
- AngularJS:关于实例化服务
- Angularjs - 更改 html 页面时重新实例化服务
- 在AngularJS中实例化全局服务
- AngularJS-函数没有从服务中实例化
- 如何做:AngularJS服务或其他组件在模块加载时实例化
- 强制Angular 2子模块中的服务实例化(AngularJS运行块的替代方案)