使用AngularJS中的服务从JSON中获取值?

时间:2016-07-28 13:52:28

标签: angularjs angular-services

我是AngularJS的初学者。我在这里尝试使用服务从JSON获取数据并显示它。我有控制器,服务的单独文件。我无法弄清楚我在这里做错了什么。我知道我们在工厂的情况下返回一个对象,但是我不确定在使用服务时如何返回值。我试过的代码如下。

HTML:我有一个index.html文件,我加载了这个HTML:

<div ng-controller="comp">
    {{capcino}}
</div>

控制器:

var app = angular.module("retailapp");

app.controller("comp", function($scope, elecservice){
    $scope.capcino = elecservice.getval();
});

服务:

angular.module("retailapp").service("elecservice", serjson);

function serjson($http){
    var val = "";

    this.getval = function(){
        $http.get("/elec.json").success(function(res){
            val = res.namet;
            return val;
        });
    }
}

路由:

var app = angular.module("retailapp", ['ngRoute']);

app.config(function($routeProvider){
    $routeProvider.when("/computer", {
        templateUrl : "computer.html",
        controller : "comp"
});

JSON:

{"namet" : "naysan"}

我想显示价值&#34; capcino&#34;在HTML中的表达式。我获得undefined的价值。请帮忙解释一下。提前谢谢。

3 个答案:

答案 0 :(得分:0)

写如下:

var app = angular.module("retailapp");

    app.controller("comp", function($scope, elecservice){

        elecservice.getval().then(function(data){
        $scope.capcino = data;
    });    

    });

答案 1 :(得分:0)

这是一个承诺,所以它在返回后设置$ scope.capcino。在返回之前,$ scope.capcino未定义。

var app = angular.module("retailapp");
    app.controller("comp", function($scope, elecservice){
        elecservice.getval().then(function(data){
        $scope.capcino = data;
    });    
});

答案 2 :(得分:0)

只需更改控制器即可存储数据。

$scope.yourFunc = function(params){
  YouService.function(params).then(function(result){
      $scope.yourVar = result.data;
    }
  })

}   }