Javascript 如何将变量从角度控制器获取到视图

Javascript 如何将变量从角度控制器获取到视图,javascript,json,angularjs,Javascript,Json,Angularjs,我有一个控制器,看起来像这样: angular.module('my_app') .controller('QueryCtrl', ['$scope', 'Query', function ($scope, Query) { $scope.onSubmit = function() { var json = $.post('http://162.243.232.223:3000/api/query', { 'input': 'my_input' });

我有一个控制器,看起来像这样:

angular.module('my_app')
  .controller('QueryCtrl', ['$scope', 'Query', function ($scope, Query) {
      $scope.onSubmit = function() {
          var json = $.post('http://162.243.232.223:3000/api/query', { 'input': 'my_input' });
          console.log(json);
          $scope.queries = json;
        };
      }
   ])
<div ng-controller="QueryCtrl">

  <form ng-submit="onSubmit()" >
    <textarea ng-model="query_box" name="my_input"></textarea>
    <button type="submit">Submit</button>
  </form>
  {{ queries }}
  <ul ng-repeat="query in queries">
    <li>{{query}}</li>
  </ul>

</div>
$scope.onSubmit = function() {
      var json = $.post('http://162.243.232.223:3000/api/query', { 'input': 'my_input' });
      json.done(function(result){
         $scope.result = result;
         $scope.$apply();
      })

      console.log(json);
      $scope.queries = json;
    };
  }

<div>{{result}}</div>
以及一个如下所示的视图:

angular.module('my_app')
  .controller('QueryCtrl', ['$scope', 'Query', function ($scope, Query) {
      $scope.onSubmit = function() {
          var json = $.post('http://162.243.232.223:3000/api/query', { 'input': 'my_input' });
          console.log(json);
          $scope.queries = json;
        };
      }
   ])
<div ng-controller="QueryCtrl">

  <form ng-submit="onSubmit()" >
    <textarea ng-model="query_box" name="my_input"></textarea>
    <button type="submit">Submit</button>
  </form>
  {{ queries }}
  <ul ng-repeat="query in queries">
    <li>{{query}}</li>
  </ul>

</div>
$scope.onSubmit = function() {
      var json = $.post('http://162.243.232.223:3000/api/query', { 'input': 'my_input' });
      json.done(function(result){
         $scope.result = result;
         $scope.$apply();
      })

      console.log(json);
      $scope.queries = json;
    };
  }

<div>{{result}}</div>
您可以通过查看输入来更仔细地查看我想要的对象

$.post('http://162.243.232.223:3000/api/query', { 'input': 'my_input' });
您自己进入javascript控制台并签出该对象

但是,在视图中,当我打印出“queries”对象时,它似乎没有responseJSON属性,而只有readyState属性


我的json对象的其余部分在哪里

这是因为promise系统以及对象在控制台中的打印方式,它们是通过引用而不是通过值打印的。尝试执行console.log(JSON.stringify(JSON)),这是一个字符串而不是一个对象,您将看到您缺少responseJSON属性。您可能会在将来将responseJSON属性附加到对象,但是console.log(对象)将打印它的当前值,即使该值是在您使用console.log之后添加的。

这是因为promise系统以及对象在控制台中的打印方式,它们是通过引用而不是通过值打印的。尝试执行console.log(JSON.stringify(JSON)),这是一个字符串而不是一个对象,您将看到您缺少responseJSON属性。您可能会在将来将responseJSON属性附加到对象,但是console.log(对象)将打印它的当前值,即使该值是在您使用console.log之后添加的。

这是因为promise系统以及对象在控制台中的打印方式,它们是通过引用而不是通过值打印的。尝试执行console.log(JSON.stringify(JSON)),这是一个字符串而不是一个对象,您将看到您缺少responseJSON属性。您可能会在将来将responseJSON属性附加到对象,但是console.log(对象)将打印它的当前值,即使该值是在您使用console.log之后添加的。

这是因为promise系统以及对象在控制台中的打印方式,它们是通过引用而不是通过值打印的。尝试执行console.log(JSON.stringify(JSON)),这是一个字符串而不是一个对象,您将看到您缺少responseJSON属性。您可能会在将来将responseJSON属性附加到对象,但console.log(对象)将打印它的当前值,即使该值是在您使用console.log之后添加的。

尝试以下操作:

angular.module('my_app')
  .controller('QueryCtrl', ['$scope', 'Query', function ($scope, Query) {
      $scope.onSubmit = function() {
          var json = $.post('http://162.243.232.223:3000/api/query', { 'input': 'my_input' });
          console.log(json);
          $scope.queries = json;
        };
      }
   ])
<div ng-controller="QueryCtrl">

  <form ng-submit="onSubmit()" >
    <textarea ng-model="query_box" name="my_input"></textarea>
    <button type="submit">Submit</button>
  </form>
  {{ queries }}
  <ul ng-repeat="query in queries">
    <li>{{query}}</li>
  </ul>

</div>
 var projectangular.module('my_app')
  .controller('QueryCtrl', ['$scope', 'Query', function ($scope,$http, Query) {
      $scope.onSubmit = function() {
          $http.post('http://162.243.232.223:3000/api/query', { 'input': 'my_input' }).then(

            //sucess
            function(response){

           angular.copy(response ,$scope.queries);
           console.log(json);

            },
            //error
            function(){
              alert("cant post");

            });

        };
      }
   ])
$scope.onSubmit = function() {
      var json = $.post('http://162.243.232.223:3000/api/query', { 'input': 'my_input' });
      json.done(function(result){
         $scope.result = result;
         $scope.$apply();
      })

      console.log(json);
      $scope.queries = json;
    };
  }

<div>{{result}}</div>
$scope.onSubmit=function(){
var json=$.post('http://162.243.232.223:3000/api/query“,{‘输入’:‘我的输入’});
json.done(函数(结果){
$scope.result=结果;
$scope.$apply();
})
log(json);
$scope.querys=json;
};
}
{{result}}

尝试以下方法:

angular.module('my_app')
  .controller('QueryCtrl', ['$scope', 'Query', function ($scope, Query) {
      $scope.onSubmit = function() {
          var json = $.post('http://162.243.232.223:3000/api/query', { 'input': 'my_input' });
          console.log(json);
          $scope.queries = json;
        };
      }
   ])
<div ng-controller="QueryCtrl">

  <form ng-submit="onSubmit()" >
    <textarea ng-model="query_box" name="my_input"></textarea>
    <button type="submit">Submit</button>
  </form>
  {{ queries }}
  <ul ng-repeat="query in queries">
    <li>{{query}}</li>
  </ul>

</div>
$scope.onSubmit = function() {
      var json = $.post('http://162.243.232.223:3000/api/query', { 'input': 'my_input' });
      json.done(function(result){
         $scope.result = result;
         $scope.$apply();
      })

      console.log(json);
      $scope.queries = json;
    };
  }

<div>{{result}}</div>
$scope.onSubmit=function(){
var json=$.post('http://162.243.232.223:3000/api/query“,{‘输入’:‘我的输入’});
json.done(函数(结果){
$scope.result=结果;
$scope.$apply();
})
log(json);
$scope.querys=json;
};
}
{{result}}

尝试以下方法:

angular.module('my_app')
  .controller('QueryCtrl', ['$scope', 'Query', function ($scope, Query) {
      $scope.onSubmit = function() {
          var json = $.post('http://162.243.232.223:3000/api/query', { 'input': 'my_input' });
          console.log(json);
          $scope.queries = json;
        };
      }
   ])
<div ng-controller="QueryCtrl">

  <form ng-submit="onSubmit()" >
    <textarea ng-model="query_box" name="my_input"></textarea>
    <button type="submit">Submit</button>
  </form>
  {{ queries }}
  <ul ng-repeat="query in queries">
    <li>{{query}}</li>
  </ul>

</div>
$scope.onSubmit = function() {
      var json = $.post('http://162.243.232.223:3000/api/query', { 'input': 'my_input' });
      json.done(function(result){
         $scope.result = result;
         $scope.$apply();
      })

      console.log(json);
      $scope.queries = json;
    };
  }

<div>{{result}}</div>
$scope.onSubmit=function(){
var json=$.post('http://162.243.232.223:3000/api/query“,{‘输入’:‘我的输入’});
json.done(函数(结果){
$scope.result=结果;
$scope.$apply();
})
log(json);
$scope.querys=json;
};
}
{{result}}

尝试以下方法:

angular.module('my_app')
  .controller('QueryCtrl', ['$scope', 'Query', function ($scope, Query) {
      $scope.onSubmit = function() {
          var json = $.post('http://162.243.232.223:3000/api/query', { 'input': 'my_input' });
          console.log(json);
          $scope.queries = json;
        };
      }
   ])
<div ng-controller="QueryCtrl">

  <form ng-submit="onSubmit()" >
    <textarea ng-model="query_box" name="my_input"></textarea>
    <button type="submit">Submit</button>
  </form>
  {{ queries }}
  <ul ng-repeat="query in queries">
    <li>{{query}}</li>
  </ul>

</div>
$scope.onSubmit = function() {
      var json = $.post('http://162.243.232.223:3000/api/query', { 'input': 'my_input' });
      json.done(function(result){
         $scope.result = result;
         $scope.$apply();
      })

      console.log(json);
      $scope.queries = json;
    };
  }

<div>{{result}}</div>
$scope.onSubmit=function(){
var json=$.post('http://162.243.232.223:3000/api/query“,{‘输入’:‘我的输入’});
json.done(函数(结果){
$scope.result=结果;
$scope.$apply();
})
log(json);
$scope.querys=json;
};
}
{{result}}

正如CAT评论的那样,您从.post获得的是一个承诺对象。您必须等待post请求完成(失败或成功)。下面的语法可能有点错误。我只是在飞行中打出来的

angular.module('my_app').controller('QueryCtrl', ['$scope', 'Query', function ($scope, Query) {
    $scope.onSubmit = function() {
        var json = $.post('http://162.243.232.223:3000/api/query', { 'input': 'my_input' }).then(function(response){
            console.log(response.data);
            $scope.queries = response.data;
            $scope.$apply();
        }, function(response){
            console.log(response.data);
            $scope.queries = response.data;
            $scope.$apply();
        });
    };
}])

正如猫评论的那样,你从.post得到的是一个承诺对象。您必须等待post请求完成(失败或成功)。下面的语法可能有点错误。我只是在飞行中打出来的

angular.module('my_app').controller('QueryCtrl', ['$scope', 'Query', function ($scope, Query) {
    $scope.onSubmit = function() {
        var json = $.post('http://162.243.232.223:3000/api/query', { 'input': 'my_input' }).then(function(response){
            console.log(response.data);
            $scope.queries = response.data;
            $scope.$apply();
        }, function(response){
            console.log(response.data);
            $scope.queries = response.data;
            $scope.$apply();
        });
    };
}])

正如猫评论的那样,你从.post得到的是一个承诺对象。您必须等待post请求完成(失败或成功)。下面的语法可能有点错误。我只是在飞行中打出来的

angular.module('my_app').controller('QueryCtrl', ['$scope', 'Query', function ($scope, Query) {
    $scope.onSubmit = function() {
        var json = $.post('http://162.243.232.223:3000/api/query', { 'input': 'my_input' }).then(function(response){
            console.log(response.data);
            $scope.queries = response.data;
            $scope.$apply();
        }, function(response){
            console.log(response.data);
            $scope.queries = response.data;
            $scope.$apply();
        });
    };
}])

正如猫评论的那样,你从.post得到的是一个承诺对象。您必须等待post请求完成(失败或成功)。下面的语法可能有点错误。我只是在飞行中打出来的

angular.module('my_app').controller('QueryCtrl', ['$scope', 'Query', function ($scope, Query) {
    $scope.onSubmit = function() {
        var json = $.post('http://162.243.232.223:3000/api/query', { 'input': 'my_input' }).then(function(response){
            console.log(response.data);
            $scope.queries = response.data;
            $scope.$apply();
        }, function(response){
            console.log(response.data);
            $scope.queries = response.data;
            $scope.$apply();
        });
    };
}])

您不使用内置angular$http服务的原因是什么?首先,您最好使用angular版本的Ajax$http。在您的例子中,$http.post(…);其次,应该在ajax调用解析(成功、失败、完成)后分配响应;然后在你的htmlAny中说明你不使用内置angular$http服务的原因?首先,你最好使用angular版本的Ajax$http。在您的例子中,$http.post(…);其次,应该在ajax调用解析(成功、失败、完成)后分配响应;然后在你的htmlAny中说明你不使用内置angular$http服务的原因?首先,你最好使用angular版本的Ajax$http。在您的例子中,$http.post(…);其次,应该在ajax调用解析(成功、失败、完成)后分配响应;然后在你的htmlAny中说明你不使用内置angular$http服务的原因?首先,你最好使用angular版本的Ajax$http。在您的例子中,$http.post(…);其次,应该在ajax调用解析(成功、失败、完成)后分配响应;然后在你的htmlGreat解释中展示这一点。谢谢,很好的解释。谢谢,很好的解释。谢谢,很好的解释。非常感谢。