我有一个需要编辑的项目表。单击编辑时,另一个控制器(EditCtrl)编辑它。 EditCtrl使用ajax调用检索可能值的列表。我遇到的问题是下拉菜单没有选中的项目。
如果您点击保时捷,请参阅此示例http://plnkr.co/edit/mUciM4I37aN3lbC6ecIo?p=preview,底部显示“汽车颜色为红色”。但是下拉菜单没有选择红色。
答案 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