Angular:如何连接控制器中的范围和服务中的范围
Angular: how to connect scope in the controller and scope in services?
如果我有一个控制器
angular
.module("TestApp")
.controller('MainCtrl', function ($scope, MyService) {
var array = [1, 4, 5, 6];
function remove() {
MyService.remove('id');
$scope.array = array;
}
render();
}
和一个服务
angular.module('TestApp').factory('MyService', function ($rootScope) {
function remove(id) {
$rootScope.array.splice(id, 1);
}
}
但我找不到我放入控制器中$scope的数组。我在$rootScope中看不到它。我能处理这个问题吗?
您可以将$scope作为参数传递给服务方法MyService.remove
angular.module('TestApp').factory('MyService', function ($rootScope) {
function remove(id, scope) {
scope.array.splice(id, 1);
}
}
但在那之后,你的服务只是一些功能的袋子。请考虑将数组存储在服务中(在cat中存储在变量中),并添加从MyService
中读取、写入和删除元素的方法。通过这种方式,您将创建集合模式。
相关文章:
- 动态加载angularjs并生成控制器和范围
- AngularJS控制器范围
- FileReader加载不在控制器范围Angular 2内
- 将外部控制器的范围变量设置为角度
- Angular.js$范围和控制器
- 具有范围变量的控制器不工作
- 将范围添加到角度种子默认视图控制器时,测试套件现在失败
- AngularJS:从控制器访问特定的指令范围
- 从html调用angularjs控制器中的一个函数,但未定义范围变量
- Angular ES6控制器范围
- 离子单选按钮-控制器范围无法识别更改
- Angular:控制器范围内的可重用功能
- 角度单元测试:如何在没有范围的情况下测试控制器属性
- 角度嵌入和访问控制器范围
- 将来自多个控制器的 AngularJS 范围对象合并到一个对象中
- AngularJS:如何在指令范围的对象发生变化时更新与控制器作用域相关联的控制器作用域
- 如何从 ng-repeat(ng-repeat)中的指令访问控制器范围
- 如何从父指令/控制器访问指令范围
- 指令angular中的访问范围控制器变量
- 无法使用 VM 绑定到范围.控制器/HTML 中的表示法