【问题标题】:load different data in table on selection of different options using dropdown in angular?使用角度下拉列表在表中加载不同的数据以选择不同的选项?
【发布时间】:2015-07-09 19:31:45
【问题描述】:

我有一个下拉列表和一个 json 文件,我想使用下拉列表中的每个选项从 json 文件中加载两个不同的数据,但我不知道该怎么做。

这是我的下拉代码,我也从控制器中创建的 json 类型文件中获取下拉数据

 <select ng-model="appointment" name="appointment-sch" ng-options="item as item.name for item in selectItemsFilterCriteria">
                <option value="">Filter Criteria</option>
            </select>

我正在像这样将选项下拉到控制器中

 $scope.selectItemsFilterCriteria = [
    {id:1 , name:"appointments scheduled"},
    {id:2 , name:"fresh leads"}

  ];

我的 json 文件中有数据,现在我希望根据从下拉列表中选择的选项对我的数据进行排序,并将其显示到一个简单的表格中

这是我的服务

(function() {
    'use strict';

    angular
        .module('n.lead-allocation')
        .factory('factoryLeadAlloc',function($http) {
            function fetchLeadRecord() {
                return $http({
                    url: "../www/jsonFiles/leadAllocRecord.json",
                    method: "GET"
                });
            }
            return{
                fetchLeadRecord:fetchLeadRecord
            }
        });
})();

我将此服务调用到控制器中并将服务 json 数据存储到项数组中。

$scope.items = [];
        factoryLeadAlloc.fetchLeadRecord().success(function(response) {
          $scope.items = response;
          $scope.search = function () {
            $scope.filteredItems = $filter('filter')($scope.items, function (item) {
              return searchMatch(item.name, $scope.query) || searchMatch(item.phoneNo, $scope.query);
              //for(var attr in item) {
              //  if (searchMatch(item[attr], $scope.query))
              //
              //    return true;
              //}
              //return false;
            });
      // take care of the 

【问题讨论】:

  • 你能分享代码吗,你是如何加载json数据的
  • 好吧,这只是一个疯狂的猜测,我个人会在您的选择上使用 ng-change,因此每次值更改时都会调用您的更改函数,并且您只需过滤您的项目并创建数组/对象你的表格数据
  • 我可以举一个例子,因为我是 Angular 新手,我不知道可用的全部选项

标签: javascript json angularjs drop-down-menu


【解决方案1】:

好的,我尝试为您整理一个 Codepen,它应该阐明您如何更改数据 Codepen

 $scope.changeTable = function(id){
    angular.forEach($scope.people, function(value, index){
        console.log(value.id)
        if(id == value.id){
        $scope.displayList.push(value);
        }
    });
    console.log($scope.displayList);
}

【讨论】:

  • 我得到了你的代码,但我无法在我的代码中实现它,因为要求不同你从同一个数组中获取数据我有 2 个 json 类型文件一个显示下拉列表和另一个包含数据
  • 好的,我更新了我的 codepen,现在您有 2 个不同的数组,当您更改下拉列表时,数组 2 中的匹配部分已列出,因此您唯一需要的是将下拉值与其他数据数组匹配得漂亮和你差不多
  • 唯一重要的是angular.forEach中的IF语句,如果选择了下拉列表中的第一个,你需要说好,然后只将特定元素推入列表
猜你喜欢
  • 2013-03-06
  • 1970-01-01
  • 1970-01-01
  • 2015-08-08
  • 2019-09-23
  • 2013-07-29
  • 1970-01-01
  • 2015-04-24
  • 1970-01-01
相关资源
最近更新 更多