2

$rootScope を使用せずに、angularjs で複数のコントローラー間でデータを共有したいと考えています。私は同じサービスを使用することを学んでいます。次のコードの何が問題になっていますか?

これは私の controllers.js です:

function Ctrl1(shareData) {
  shareData.setValue("my_data");
}

function Ctrl2($scope, shareData) {
  $scope.value = shareData.getvalue();
}

これは私の services.js です:

angular.module('connectionsServices').
  factory('shareData', function() {
  var shareVar = 'undefined';
    return {
              getValue: function() {
          return shareVar;
          },

              setValue: function(value) {
          shareVar = value;
          }
       }
       });

しかし、それは機能していません。

4

2 に答える 2

0

サービス変数をコントローラー変数にバインドできません。コードが変更shareVarされていますが、それを見ることができません。次のようにビューを更新できます。

HTML:

<div ng-app="testApp">
    <div ng-controller="Ctrl2">{{ value }}
        <br />
        <div ng-controller="Ctrl1">
            <button type="button" ng-click="change(); update();">Change me!</button>
        </div>
    </div>
</div>

JS:

angular.module('testApp', []).factory('shareData', function ($window) {
    var shareVar = 'undefined';
    return {
        getValue: function () {
            return shareVar;
        },

        setValue: function (value) {
            shareVar = value;
        }
    };
});

function Ctrl1($scope, $window, shareData) {
        $scope.change = function () {
            shareData.setValue("my_data");
        };
    }

    function Ctrl2($scope, shareData) {
        $scope.value = shareData.getValue();

        $scope.update = function () {
            $scope.value = shareData.getValue();
        };
    }
于 2014-01-05T12:39:20.693 に答える