2017-02-28 8 views
0

Im最初の画面に2つのhtml画面があり、入力を取得してサービスに保存するので、同じ値に別のコントローラがアクセスし、 2番目の画面。ここでは、最初のhtml画面の値をサービスに保存できますが、別のコントローラを使用して値にアクセスしているときに問題が発生しています。それで、別のコントローラからサービスの価値にアクセスする方法と、ここで間違いがあります。コントローラを使用してサービス内の変数にアクセスする方法

サービス:

var app = angular.module('myApp', []); 
app.service('variableProperties', function() { 
this.sampleVariable= function(data){ 
    var dataStored= 'data'; 
return { 
    getString: function() { 
     return dataStored; 
    }}}}); 

コントローラー1:

app.controller('controller1',function($scope, variableProperties){ 
    $scope.submit= function(formData){ 
    variableProperties.sampleVariable($scope.name); 
    $state.go('screen2.html'); 
    } 
    }) 

はコントローラー2:

app.controller('controller2',function($scope, variableProperties){ 
     $scope.getData = variableProperties.getString(); 
}) 
+0

、次のように変更し、あなたのサービスでありますどれか)? – lealceldeiro

+0

あなたのサービスは、コードはあまり意味がありません。これは、通常、間違った書式設定の結果であり、間違った場所にかっこを見落としやすくなります。あなたのサービス機能を再フォーマットすれば、簡単にエラーをキャッチすることができます。 – Igor

+0

getStringを取得しているImは定義されていません – Rudhra

答えて

0

そのあなたのサービス、コードがすべてであまり意味がありません。

ここでは、クリアなゲッターとセッターとデータを格納する新しいインスタンスを返すサービスです。

app.service('variableProperties', function() { 
    var newService = {}; 
    newService.data = ""; // (optional) initialize the storage variable to some empty string 

    // define a setter 
    newService.sampleVariable = function(data){ 
     newService.data = data; 
    } 
    // define a getter 
    newService.getString = function() { 
     return newService.data; 
    } 

    // return the newly defined service 
    return newService; 
}); 
0

問題があれば(コンソールdevtoolにどのようなエラーが出ている

app.service('variableProperties', function() { 
    var dataStored; 
    var sampleVariable = function(data) { 
    dataStored = data; 
    } 
    var getString = function() { 
    return dataStored; 
    } 
    return { 
    sampleVariable: sampleVariable, 
    getString: getString 
    }; 
}); 

DEMO

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

 
app.controller('Controller1', function($scope, variableProperties) { 
 
    $scope.someData = "i am from controoler 1"; 
 
    variableProperties.sampleVariable($scope.someData); 
 
}); 
 
app.controller('Controller2', function($scope, variableProperties) { 
 
    $scope.lists = variableProperties.getString(); 
 
}); 
 
app.service('variableProperties', function() { 
 
    var dataStored; 
 
    var sampleVariable = function(data) { 
 
    dataStored = data; 
 
    } 
 
    var getString = function() { 
 
    return dataStored; 
 
    } 
 
    return { 
 
    sampleVariable: sampleVariable, 
 
    getString: getString 
 
    }; 
 
});
<!DOCTYPE html> 
 
<html> 
 

 
<head> 
 
    <meta charset="utf-8" /> 
 
    <title></title> 
 
</head> 
 
<body ng-app="myApp">  
 
     <div ng-controller="Controller1"> 
 
    <ul> 
 
     controller 1 
 
    </ul> 
 
    </div> 
 
    <div ng-controller="Controller2"> 
 
    <ul> 
 
     <li> 
 
     controllert 2 section {{lists}} 
 
     </li> 
 
    </ul> 
 
    </div> 
 
    <script type=" text/javascript " src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.6/angular.js "></script> 
 
    <script type="text/javascript " src="MainViewController.js "></script> 
 
</body> 
 
</html>

+0

私は 'variableProperties.getString();'を取得していますが関数ではありません.. – Rudhra

関連する問題