【问题标题】:Sharing data between AngularJS controllers? [duplicate]在 AngularJS 控制器之间共享数据? [复制]
【发布时间】:2013-05-28 15:15:42
【问题描述】:

如何将我在复选框中选择的项目与其他控制器一起存储?

我的尝试(见the plnkr 的观点):

script.js(控制器)

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'];

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-12-15
      • 2014-03-22
      • 1970-01-01
      • 2014-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-29
      • 1970-01-01
      相关资源
      最近更新 更多