我对连接到一个对象的两个选择框有疑问。我创建了一个 plunker,但在那里很好,但在我的应用程序中却没有。基本上,我将代码中的所有内容都复制到了 plunker,它在那里工作,但不在我的代码中。这是链接:plnkr
app.controller('MainCtrl', function($scope) {
$scope.consoleLog = '';
$scope.sites = [
{name: 'site1', id: 001, datasources:[
{name: 'one', id: 441},
{name: 'two', id: 442},
{name: 'three', id: 443}
]},
{name: 'site2', id: 002, datasources:[
{name: 'four', id: 444},
{name: 'five', id: 445},
{name: 'six', id: 446},
{name: 'seven', id: 447}
]}];
$scope.selectedSiteIndx = 0;
$scope.selectedSite = $scope.sites[$scope.selectedSiteIndx].id;
$scope.selectedDs = $scope.sites[$scope.selectedSiteIndx].datasources[0].id;
$scope.selectedSiteChanged = function (selectedSite){
var siteIndx = $scope.sites.map(function(e){return e.id}).indexOf(selectedSite);
$scope.selectedDs = $scope.sites[siteIndx].datasources[0].id;
$scope.selectedSite = selectedSite;
$scope.selectedSiteIndx = siteIndx;
};
$scope.selectedDsChanged = function(selDs){
$scope.selectedDs = selDs;
$scope.consoleLog += 'selected:'+selDs+', ';
};
});
我有两个选择框。首先是选址。其次是数据源选择。当您在第一个框中选择一个站点时,第二个选择框会将其列表更改为来自新对象的嵌套数据源。它运行良好,没有问题。您可以更改站点,新数据将填充到第二个框中。我想选择一个默认选项(第一个选项可用)。因此,当您选择站点时,将自动选择该站点的第一个数据源。我的应用程序中的问题(由于某种原因不在 plnkr 中)是当我从 box2 中选择不同的数据源然后在第一个框中更改站点时。默认的第一个选项不会自动选择。在更改数据源之前,我可以多次更改站点,并且始终会选择数据源框 2 中的第一个选项。但是一旦我触摸数据源框,它就会停止。正如我所说,你可以' 在plnkr上看不到。我还注意到,当我更改站点时,数据源更改事件侦听器是由 datasource Id = null 触发的。但这只是在我触摸 2 号盒子后才发生的
任何想法为什么?我已经尝试了许多不同的选项,选择等。不能让它工作。我只想始终选择第一个可用选项。