【问题标题】:Angular JS selectize errorAngular JS选择错误
【发布时间】:2015-05-27 04:01:30
【问题描述】:

这让我发疯了,因为我找不到真正的原因。

我有一个 Angular 1.3.2 项目。在一个视图中,一个控制器、一个工厂和 2 个 json 文件作为源。我添加了 2 个选择菜单,都可以正常工作。

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

我保持不变的html,但调整了选择以匹配新数据:

 <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"
    }
  ]
}

关键是:菜单按预期工作正常,并显示我的数据。问题是我也收到此错误:

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

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

【问题讨论】:

    标签: javascript jquery json angularjs selectize.js


    【解决方案1】:

    我认为你需要改变:

    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']
        }
      };
    });
    

    我认为在您的承诺返回之前,partnerList 是未定义的,您的 selectize 正在尝试从中获取 name 属性。

    【讨论】:

    • 祝福你!我知道盯着我的脸是愚蠢的。这些天我做的大多数项目我们都使用“controller as”语法,所以我习惯了“var”。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-29
    • 1970-01-01
    • 1970-01-01
    • 2013-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多