【问题标题】:AngularJS Read From JSON Returning NothingAngularJS 从 JSON 读取什么都不返回
【发布时间】:2018-08-02 12:55:22
【问题描述】:

我正在构建一个应用程序,该应用程序有一个按钮,该按钮根据 JSON 中的 ID 加载帮助,当我在 controller.js 中有 JSON 时,我在网页上看到它,但如果我在外部执行它,我看不到任何事物。我觉得我错过了一些非常简单的东西,但可能看得太多了。有什么想法吗?

controllerNEW.js

app.factory("UserService", function($rootScope, $http){
     function getFile(){
       return $http.get('stat.json').then(function(data) {
            return data;
        }); 
    } 

    return{statErr: getFile,

        //hide the displayed tooltip based on its id
        hideTooltip: function(key, scopes, data)
        {

controllerOLD.js

app.factory("UserService", function($rootScope){
    return{
        statErr: [
            {
                selector: "#userEmail",
                fieldTitle: "Email",
                placement: "right",
                content: "test",
                offsetTop: 500,
                correctKey: "@test",
                inErrorList: false
            },
            {
                selector: "#userId",
                fieldId: "id1",
                fieldTitle: "ID",
                placement: "right",
                content: " number should contain 4 zeroes '...0000...'",
                offsetTop: 500,
                correctKey: "0000",
                inErrorList: false
            }
        ],

        //hide the displayed tooltip based on its id
        hideTooltip: function(key, scopes, data)
        {

【问题讨论】:

  • 查看你的数据的响应,回调是data.data
  • function(data) { return data; } 只是将数据...返回到遗忘状态。你没有对待它,也没有对它做任何事情。
  • 我正在调用我期望会返回数据的函数
  • 另一个更改可能只是将请求留在您的服务中并在您的控制器中执行承诺。事实上,这是一种很好的做法。

标签: javascript angularjs http-get


【解决方案1】:

问题是getFile() 返回一个承诺而不是数据本身。你确实有一个.then(function(data) {return data; });,但是,.then() 也返回一个承诺。

所以要解决这个问题,在您的实际代码中,在您调用getFile() 之后,您还需要添加.then() 才能访问您的数据:

getFile().then(function(data){
 // now you have access to your data
})

【讨论】:

    【解决方案2】:

    您需要访问响应对象中的 data 对象。

    示例:

    var jsonResponse = $http.get('content.json').then(function(response) {
            return response.data;
        });
    

    【讨论】:

    • 当你“console.log”响应时,你看到了什么?
    【解决方案3】:

    在您的示例中,data 是对您的请求的全部响应,包括标头和状态。要查看'stat.json' 文件中的数据,您将访问datadata 对象。所以,变化是。

    function getFile(){
           return $http.get('stat.json').then(function(data) {
                return data.data;
            }); 
        } 
    

    【讨论】:

    • 请告诉我您调用service 的控制器。我没看到实现在哪里
    【解决方案4】:

    你可以试试这样的

     $http.get('stat.json').then(function(result){
         $scope.dataset = result.data
         console.log($scope.dataset)
        },function(error){
         console.log(error)
        })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-18
      • 2018-09-10
      • 2017-02-14
      • 2013-10-25
      相关资源
      最近更新 更多