2014-02-15 34 views

回答

0

在您的示例中,您使用的是window.setTimeout,因此select中的選項甚至不會更新。爲了得到它與你需要用在$apply內容window.setTimeout工作:

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

+0

啊,所以他們通過參考evaulated!我以爲我錯過了ng-options如何將$ scope.colors中的值鏈接到$ scope.car.color。 您的示例工程雖然需要將顏色列表存儲在服務中。如果我正在處理很多列表,這可能會有點不方便。 我已經更新我的例子在$ scope.colors $ scope.colors後$ scope.car.color鏈接到該項目被加載:http://plnkr.co/edit/mUciM4I37aN3lbC6ecIo?p=preview 謝謝! – Gary

+0

哎呀,鏈接其實就是這一個! http://plnkr.co/edit/FxXOsurCmewEvRQc6ZRw?p=preview – Gary

相關問題