如何将数据从一个控制器传递到服务,并在同一事件上访问其他控制器上的数据
How to pass Data from One Controller to Service and access that data on Other Controller on same event?
我在尝试使用我的服务将数据从一个控制器传递到另一个控制器时遇到了一些问题。
我一直在我的控制器中使用$rootScope
实现原型继承并广播该对象,以便我可以访问其他控制器中的数据。
当我使用$rootScope
时,我污染了全局命名空间,我想将数据从这个控制器传递到另一个控制器。
我只是在表中显示最小的数据,当用户单击表的特定记录时,我想在对象中显示整个数据。
我就是这样处理的。
<tr ng-repeat="contact in filterContacts = (contacts.contactsData | filter:sensitiveSearch | orderBy:selectBox) " ng-style="{'background-color': contact.email == selectedContact.email ? 'lightgrey' : ''}" ng-click="selectContact(contact)">
在控制器A中:我从视图中调用这个函数并注入特定的行联系人详细信息。
$scope.selectContact = function(contact) {
contactService.selectedContactInfo(contact);
};
在Service中我只是返回那个数据-
var selectedContactInfo = function(contact) {
return contact;
};
如何在同一事件期间访问控制器B中的此数据并将其显示在我的视图中
Here is the reference Link: http://plnkr.co/edit/beOmiv?p=info
我不想使用$rootScope
,但我想访问数据到另一个控制器。
你可以使用angular的服务。
angular的服务都是单例的,你把它们注入到控制器中,这样你就可以把同一个服务注入到两个不同的控制器中,这样你就可以有效地在它们之间传递状态了。
假设您的服务中有一个属性,可以称为selectedUserID。单击特定行时更新此属性。然后在下一个控制器中,注入相同的服务,并使用此属性来确定将加载哪些详细信息。
所以你可以在你的服务中有一个方法,看起来像这样:
updateSelectedUser = function(userID) {
this.selectedUserID = userID;
}
当点击动作发生时,你的控制器从服务中调用这个方法:
myService.updateSelectedUser($scope.selectedUserID);
这只是一个例子,当然,把你自己的值放进去。
有一件事要记住:服务可以保存状态,毕竟它们是对象而且是单例的,所以你总是注入同一个实例。确保存储在服务内部的状态不被不经过此服务的外部操作修改是有意义的。换句话说,确保没有其他东西改变这个selectedUserID,这样您的服务状态数据就不会失去同步。如果你能做到这一点,那么你就成功了。
相关文章:
- 在控制器和数据对象之间同步数据
- 使用Ajax请求rails控制器数据
- 如何将控制器数据加载到javascript数组中
- 如何在 angular js 中访问子控制器内的父控制器数据
- 按天在视图中应用控制器数据
- 跳跃运动控制器数据的清理
- AngularJS-通过服务从指令更新控制器数据(this.model语法)
- AngularJS通过服务自动更新控制器数据
- AJAX中的AngularJS控制器数据并不总是有效的
- 自定义指令控制器数据与工厂数据同步
- 来自路由提供程序的访问控制器数据
- Angularjs的服务和控制器数据不同步
- Ui-sref阻止访问控制器数据或视图
- 控制器数据没有传递给指令
- Angular ui-router多个嵌套和控制器数据
- 停止搜索解析控制器数据
- 使用AngularJS指令修改控制器数据
- 如何设置第一个控制器数据另一个控制器
- 控制器数据以角度设置另一页
- 如何在viewjavascript中访问playframework's控制器数据