使用选择异步填充的选项编辑项目

时间:2014-02-15 18:04:41

标签: angularjs ng-options

我有一个需要编辑的项目表。单击编辑时,另一个控制器(EditCtrl)编辑它。 EditCtrl使用ajax调用检索可能值的列表。我遇到的问题是下拉菜单没有选中的项目。

如果您点击保时捷,请参阅此示例http://plnkr.co/edit/mUciM4I37aN3lbC6ecIo?p=preview,底部显示“汽车颜色为红色”。但是下拉菜单没有选择红色。

1 个答案:

答案 0 :(得分:0)

在您的示例中,您使用的是window.setTimeout,因此选择中的选项甚至不会更新。要使其与window.setTimeout一起使用,您需要将内容包装在$apply

window.setTimeout(function() {
  $scope.$apply(function () {
    $scope.colors = [
      {code: "#ff0000", name: "red"},
      {code: "#0000ff", name: "blue"},
      {code: "#00ff00", name: "green"}];
  }, 100);
});

或者您可以使用$timeout服务并跳过$apply

$timeout(function() {
  $scope.colors = [
    {code: "#ff0000", name: "red"},
    {code: "#0000ff", name: "blue"},
    {code: "#00ff00", name: "green"}];
}, 100);

但是当你说你正在使用Ajax调用时,我怀疑这是你真正的问题(除非你没有使用$http服务)。

完成这些更改后,示例中的选择仍然无法正确选择颜色。这是因为ng-model="car.color"中的颜色对象与$scope.colors中的对象的相等性是通过引用来评估的。因此,要使它工作,他们需要引用相同的对象。

您的示例的工作版本:http://plnkr.co/edit/Nx9nPYMDgPCSVWpOrQoV?p=preview