Javascript 在同一个角度控制器中将JSON数据从一个函数注入到另一个函数

Javascript 在同一个角度控制器中将JSON数据从一个函数注入到另一个函数,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我目前在一个节点,角度,表达,html环境。 我有许多按钮,我用它们来填充这个文本区域,其中包含字母的格式化文本数据 <div class="form-group"> <label class="control-label" for="flyer description">Description</label> <textarea style="height:400px" class="form-control" id="flyer-descrip

我目前在一个节点,角度,表达,html环境。 我有许多按钮,我用它们来填充这个文本区域,其中包含字母的格式化文本数据

<div class="form-group">
 <label class="control-label" for="flyer description">Description</label>
  <textarea style="height:400px" class="form-control" id="flyer-description"></textarea>
</div>

现在,当我导入文本时,我想导入JSON数据,这样当文本调用say
{{client.name}}
时,在ClientCtrl(Angular Controller)和我的模块存在的情况下,它将更改为特定客户机的名称。有人有什么建议吗?

您可以使用
$http
获取数据并异步返回,如下所示:

    $http.get('dir/wherever/your/data/is/data.json').then(
        function (response) {
            //success
            vm.buttonData = response;
        },
        function (response) {
            //fail
            console.log("error");
        }
    );

您可以在此处阅读有关
$http
的内容

如果您处于角度环境中,您将需要调整您正在使用的模式。在您的例子中,它们是非常jQuery的,而不是非常有角度。您可以通过调整以下各项来解决此问题:

<div class="form-group">
    <label class="control-label" for="flyer description">Description</label>
    <textarea style="height:400px" class="form-control" id="flyer-description" ng-model="flyerdescription"></textarea>
<div>

描述

欢迎客户
并将javascript修改为:

angular.module('<yourangularappname>').controller('ClientCtrl', function($scope, $http){
    $scope.loadFlyer = function() {
      $http.get("/assets/clientwelcome.txt").then(function(res){
          $scope.flyerdescription = res.data;
      });
    });
});
angular.module(“”).controller('ClientCtrl',function($scope,$http){
$scope.loadFlyer=函数(){
$http.get(“/assets/clientwelcome.txt”)。然后(函数(res){
$scope.flyerdescription=res.data;
});
});
});

使用
$q
解析
$http
是一种反模式
$http
本身已经返回了一个承诺。只需返回
$http
并摆脱
$q
您完全正确,我试图将我的示例建立在以前工作的基础上,但没有抓住重点。我将编辑我的帖子。你的代码在我所说的方面非常好,但是我需要从$scope.clients中插入数据,这样我就可以在文本中获得客户信息。如何将此数据(以前通过http.get获取)注入flyer函数?同一控制器,我是否仍必须使用服务?如果我理解正确,您将希望将上述代码从$scope.flyerdescription更改为$scope.clients,以便$scope.clients从您的文件获取数据。您需要将ng模型部件更新为ng model=“clients”。ng模型是用于在javascript代码和HTML之间绑定数据的机制。看看这把小提琴,它应该为您阐明绑定/注入的概念。Angular是关于双向数据绑定的,它“神奇地”保持了javascript和HTML的同步。是的,您对scope客户端的看法是正确的<代码>myApp.controller('ClientCtrl',['$scope','$http','$routeParams',函数($scope,$http,$routeParams){$scope.clients=[];$http.get('/client').success(函数(数据,状态,头,配置){$scope.clients=data;if(数据==“”){$scope.clients=[];})。错误(函数(数据、状态、标题、配置){console.log(“Ops:cannotgetanydata”);})我已经有了这个,但是怎样才能把客户机数据和传单放在一起,并且仍然调用文本呢?clientwelcome.txt就是这个字母,它包含类似于亲爱的{{client.name}的内容,当我填充FlyerDescription文本区域时,我希望它根据给定id参数的客户机显示出来。我已经介绍了所有其他内容,除了单击按钮时,JSON数据将替换{{client.name}和{{{client.address}等常规字段
<td><button id="button1" ng-click="loadFlyer()">Client Welcome</button></td>
angular.module('<yourangularappname>').controller('ClientCtrl', function($scope, $http){
    $scope.loadFlyer = function() {
      $http.get("/assets/clientwelcome.txt").then(function(res){
          $scope.flyerdescription = res.data;
      });
    });
});