angularjs-共享服务';在两个控制器之间交换数据
我是新手。我有一个小程序,可以显示姓名列表。我使用angularjs-共享服务';在两个控制器之间交换数据,angularjs,service,controller,scope,Angularjs,Service,Controller,Scope,我是新手。我有一个小程序,可以显示姓名列表。我使用listController管理列表的显示,使用editController提交更多名称,或将列表重置为初始状态。我在由两个控制器访问的服务中持有名称列表 问题是当editController重置列表时,listController仍然不知道它。我一直在绞尽脑汁想这个问题,如果有人能快速看一下,看看问题是什么,我会很感激的 人员名单 {{person.firstName}{{person.lastName}} 添加新人员 名字 姓 拯
listController
管理列表的显示,使用editController
提交更多名称,或将列表重置为初始状态。我在由两个控制器访问的服务中持有名称列表
问题是当editController
重置列表时,listController
仍然不知道它。我一直在绞尽脑汁想这个问题,如果有人能快速看一下,看看问题是什么,我会很感激的
人员名单
-
{{person.firstName}{{person.lastName}}
添加新人员
名字
姓
拯救
重置
好的,代码就是这样运行的
//this will recreate the array
list = [{
firstName: 'Rachel',
lastName: 'Washington'
}, {
firstName: 'Joshua',
lastName: 'Foster'
}, {
firstName: 'Samuel',
lastName: 'Walker'
}, {
firstName: 'Phyllis',
lastName: 'Reynolds'
}];
所以重要的是你不要这样做,把它改成
var data = [{
firstName: 'Rachel',
lastName: 'Washington'
}, {
firstName: 'Joshua',
lastName: 'Foster'
}, {
firstName: 'Samuel',
lastName: 'Walker'
}, {
firstName: 'Phyllis',
lastName: 'Reynolds'
}];
list.length = 0;
angular.forEach(data, function(val){
list.push(val);
})
通过这种方式,您不会重新创建数组,请注意没有“list=something”
list.length = 0; //removes all items but does not remove the reference
移除项目后,可以重新填充
请记住,还应将列表变量初始化为数组
var list = [];
对于javascript来说,使用“list.length=0”保存对数组的引用听起来似乎微不足道。但是哇,这是一件大事。吸取教训!谢谢