javascript - 在 AngularJS Controller 之间共享数据?

标签 javascript angularjs angularjs-directive angularjs-scope angularjs-controller

<分区>

如何使用其他 Controller 存储我在复选框中选择的项目?

我的尝试(查看 the plnkr 的观点):

script.js( Controller )

var myApp = angular.module('myApp', []);

myApp.factory('CooSelection', function () {
  return {selectedCoo: []}
})

function CooListCtrl($scope, CooSelection) {
  $scope.coos = {"Coos": ["spark", "nark", "hark", "quark"]};

  $scope.coo_list_selection = CooSelection;

  $scope.checkSelection = function (item) {
    if ($scope.coo_list_selection.indexOf(item) === -1) {
      $scope.coo_list_selection.push(item);
    } else {
      $scope.coo_list_selection.splice($scope.coo_list_selection.lastIndexOf(item), 1);
    }
  }
}

CooListCtrl.$inject = ['$scope', 'CooSelection'];

function DebugCooList($scope, CooSelection) {
  $scope.coo_selection = CooSelection;
}

DebugCooList.$inject = ['$scope', 'CooSelection'];

最佳答案

当您引用 CooSelection 服务时,您需要一个数组,但工厂返回一个对象。你可以这样做:

myApp.factory('CooSelection', function () {
    return [];    // Return an array instead of an object.
})

此外,在您的 DebugCooList Controller 中,您的范围属性与您在 View 中检查的变量的名称不匹配。 Controller 代码分配给 coo_selection 但 View 检查 coo_list_selection,因此您需要更改一个以匹配另一个。

关于javascript - 在 AngularJS Controller 之间共享数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16880340/

相关文章:

javascript - 将 AngularJS $filter 与 ng-disabled 一起使用

javascript - 在 AngularJS 中输出键值对作为链接

angularjs - 在单元测试中使用 passThrough 进行 Angular 测试

javascript - Angular 服务导致错误

javascript - 为什么我的谷歌地图标记没有显示?

javascript - 如何在 settimeout 内解析异步函数

javascript - 更改 Javascript 数组内的对象值

javascript - 将 withCredential 与 $resource 一起使用

angularjs - 在模板中使用光滑的轮播

javascript - 实体元数据未找到 : No metadata for "User" was found