javascript - Angular js : How to make make ajax call for directives to create options

标签 javascript jquery angularjs ajax

我为表单控件创建了指令。 有些控件将具有来自 ajax[API] 调用的选项。

我被困在这里如何通过指令进行 ajax 调用。

    function selectControlDir()
    {
        return {
            transclude: true,
            restrict: 'E',
            scope: {
                data: '=data'
            },
            template: "<div ng-transclude></div><label>{{data._text}} </label><select type='text' name='{{data._attributeName}}' id='{{data._attributeName}}' >\n\
<option ng-repeat='ans in data._answerOptions'>{{ans._promptText}}</option></select>"
            ,
            link: function (scope, element, attrs)
            {
                //console.log("scope.data.QuestionData", scope.data.QuestionData);
            }
        };
    }

Plunker 获取完整代码 http://plnkr.co/edit/Op1QDwUBECAosPUC7r3N?p=preview

在这里,我想对 Year 进行 api 调用(在页面加载时)。 Make 的年份更改更新选项。

最佳答案

为此,您可以做的最好是在 year 元素上设置一个 ng-change 事件指令,并在 Controller 中使用一个数组来保存所有的事情都发生在那一年:

var app = angular.module('yourApp', []);

app.controller('yourController', ['$scope', '$http',
  function($scope, $http) {
    $scope.o = {
      makes: [{make:'Make1'}, {make:'Make2'}], // <---just for demo
      getMake: function(year) {
        $http.post(url, {
            year: year  // <----pass the year to backend as year like : { year:1990 }
          })
          .then(function success(response) {
              $scope.o.makes = response.data; // <---put actual data here
            },
            function error(e) {
              console.error(e);
            });
      }
    };
  }
]);
<div ng-app='yourApp' ng-controller='yourController'>
  <select ng-model='year' ng-change='o.getMake(year)'>
    <option>1990</option>
    <option>1991</option>
  </select>
    <select ng-model='make' ng-options='make as make.make for make in o.makes track by make.make'>
    <option>Make...</option>
  </select>
</div>

关于javascript - Angular js : How to make make ajax call for directives to create options,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38456404/

相关文章:

javascript - 使用 JSZip 将 CSV 文件添加到 zip 文件后发生更改

javascript - 即使填写并检查了所有字段后,表单也不会提交

javascript - 仅在 IE 中的 JS 数组推送错误

javascript - 如何按顺序选择具有多个类的元素

javascript - 如何判断 Javascript 替换函数中是否发生了替换?

javascript - 在每个函数中使用 jquery 数据属性

html - 单击时用另一个 div 替换 div

javascript - 使用工作流检查问题字段是否变为 "In Progress"时出现异常

javascript - 如何将多个angularjs文件编译成单个应用程序文件

javascript - 如何使用多个 ng-options 处理级联/链接下拉菜单