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 正试图从中获取名称 属性。
这让我抓狂,因为我找不到真正的原因。
我有一个 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 正试图从中获取名称 属性。