Angular JS 选择错误

Angular JS selectize error

这让我抓狂,因为我找不到真正的原因。

我有一个 Angular 1.3.2 项目。在一种视图中,将一个控制器、一个工厂和 2 个 json 文件作为源。我添加了 2 个选择菜单,两者都很好用。

我另存为创建了一个新文件、新控制器、新工厂、新 json 文件。

html 我保持不变但调整了 selectize 以匹配新数据:

 <input type="text" selectize="partnerSelectMenu.options" options="partnerList" ng-model="partner.selected" />

工厂是

    app.factory('DatagroupsFactory', ['$http',
  function($http) {

    var datagroupsData;

    return {
      getDataGroups: function() {
        if (!datagroupsData) {
          datagroupsData = $http.get('scripts/data/datagroups.json').then(function(response) {
            return response.data;
          });
        }
        return datagroupsData;
      }
    };

  }
]);

控制器是

    app.controller('AddDatagroupCtrl', function($scope, $log, PartnerFactory) {

  var partnerList = [];

  PartnerFactory.getPartners().then(function(response) {
    $scope.partnerList = response.partners;
  });

  $scope.partnerSelectMenu = {
    options: {
      valueField: 'name',
      labelField: 'name',
      searchField: ['name'],
      plugins: ['remove_button']
    }
  };

});

和json的片段:

    {
  "partners" : [
    {
      "value" : "CPPRT0002706",
      "name" : "Axis Promotions"
    },
    {
      "value" : "CPPRT0005006",
      "name" : "Band of Outsiders"
    }
  ]
}

关键是:菜单工作正常,正如预期的那样,并显示了我的数据。问题是我也收到这个错误:

我已经尝试注释掉这个文件路径的每一部分。没有什么。日志调试语句显示数据被正确传递;哎呀,菜单甚至可以工作

我网站上具有选择菜单的其他页面(具有相同的选项)不会抛出此错误。我不知道如何追踪。

我认为你需要改变:

var partnerList = [];

$scope.partnerList = [];

在你的控制器中。

  app.controller('AddDatagroupCtrl', function($scope, $log, PartnerFactory) {

  $scope.partnerList = [];

  PartnerFactory.getPartners().then(function(response) {
    $scope.partnerList = response.partners;
  });

  $scope.partnerSelectMenu = {
    options: {
      valueField: 'name',
      labelField: 'name',
      searchField: ['name'],
      plugins: ['remove_button']
    }
  };
});

我认为在您承诺 returns 之前,partnerList 未定义,您的 selectize 正试图从中获取名称 属性。