这让我疯了,因为我找不到真正的理由。
我有一个Angular 1.3.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"
}
]
}
这里是踢球者:菜单正常工作,正如预期的那样,并显示我的数据。问题是我也遇到了这个错误:
我试过评论这段文件的每一部分。没有。日志调试语句显示数据正确传递;哎呀, 菜单甚至有用 。
我网站上的其他页面带有选择性菜单 - 使用相同的选项 - 不会抛出此错误。我对如何追踪而感到茫然。
答案 0 :(得分:0)
我认为你需要改变:
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是未定义的,您的选择是试图从中获取名称属性。