Angularjs问题,带下拉菜单的模型绑定

Angularjs问题,带下拉菜单的模型绑定,angularjs,Angularjs,因此,我在设置此下拉列表中的值时遇到问题: 角度.模数Yapp,[] .controllermyController,函数$scope{ $scope.selected_country={value:orig value} $scope.countries=[ {id:1,nicename:philippine,iso:PH}, {id:2,名称:美国,iso:US} ] $scope.load_states=函数{ console.log'load states',$scope.select

因此,我在设置此下拉列表中的值时遇到问题:

角度.模数Yapp,[] .controllermyController,函数$scope{ $scope.selected_country={value:orig value} $scope.countries=[ {id:1,nicename:philippine,iso:PH}, {id:2,名称:美国,iso:US} ] $scope.load_states=函数{ console.log'load states',$scope.selected_country; //请在此处发布请求以获取状态 } }; -挑选- {{选定的国家} 试试这个 $scope.selected_country={id:1,nicename:Philippine,iso:PH}

$scope.selected\国家/地区类型应与$scope.countries的对象相同 角度.模数Yapp,[] .controllermyController,函数$scope{ $scope.countries=[ {id:0,value:-Select-,iso:OV}, {id:1,值:菲律宾,iso:PH}, {id:2,值:美国,iso:US} ]; $scope.selected_country=$scope.countries[0]; $scope.load_states=functionval{ $scope.selected_country=val; console.log'load states',$scope.selected_country; //请在此处发布请求以获取状态 } }; {{选定的国家}
我猜在您的真实代码中,下拉列表位于创建子范围的其他容器中。因此,您选择的_国家/地区不是在控制器自己的范围内设置的,而是在某些控件的范围内设置的。这就是为什么您在代码段中看到它工作,但在您的项目中它不工作。这是经常建议使用controllerAs语法的原因之一,在这里,您可以将此变量称为vm.selected_country,并且它将在正确的范围内

您可以在控制器中创建一些容器变量,如$scope.vm={};并在其上设置选定的国家/地区。它应该会起作用

<select ng-model="vm.selected_country" ng-change="load_states()" id="country" name="country" class="form-control" ng-options="data as data.nicename for data in countries" required>
-挑选- {{选定的国家}
按如下方式修改您的代码:

  $scope.countries = [{
    id: 1,
    nicename: "Philippines",
    iso: "PH"
  }, {
    id: 2,
    nicename: "United States",
    iso: "US"
  }];

  $scope.selected_country = $scope.countries[0];
这会奏效的


我不知道你的项目是什么样子的,但很可能下拉列表中的值并没有设置在控制器的范围内。您可以使用Batarang或Chrome的Angular Inspector对此进行检查。选定对象的结构应如下所示$scope.selected=$scope.items[0];来源:这是可行的,但我无法将值设置回“选择”下拉列表。双向绑定不起作用。我的问题有道理吗?lolI确实使用了相同的格式,但load_状态下的控制台日志始终记录其值。不是新的您能创建plunker吗?我使用第一个值索引0作为初始值,但控制台日志加载状态总是记录初始值,而不是新值:嗯。。下拉列表位于uib选项卡angular ui中,下拉列表显示从另一个post请求中设置的值,我在该请求中获取所有国家/地区。请与angular Inspector一起检查。您选择的_国家/地区变量未在控制器的作用域上设置。这就是为什么它不能console.log它的值,因为它在子作用域中。Angular只搜索父对象中的变量。@GelBalano看看我添加的示例。他们展示了正在发生的事情,也展示了如何解决问题。陛下救了我!!这管用!guess在UI选项卡内设置角度foreach被认为是在子范围内。非常感谢!