2017-02-28 104 views
0

在第一个屏幕中,我有两个html屏幕,即获取一个输入并将其保存在一个服务中,以便相同的值由另一个控制器访问,并显示第二个屏幕。在这里我能够将第一个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

什么错误你好吗控制台devtool(如果任何)? – lealceldeiro

+0

它的服务,代码根本没有多少意义。这通常是马虎格式化的结果,它容易忽略错误位置的支架。重新格式化您的服务功能,您应该能够轻松捕捉到您的错误。 – Igor

+0

我得到的getString是undefined – Rudhra

回答

0

它的服务,代码没有多大意义的。

这是一个服务,它返回一个带有明确的getter和setter以及数据存储的新实例。

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

问题是你的服务,如下改变它,

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

相关问题