使用AngularJS绑定到数组的下拉列表在填充数组时不会立即更新

时间:2013-08-26 12:27:49

标签: angularjs

我正在尝试使用Angular JS将select控件绑定到数组。在包含select的div上我使用ng-init

调用一个函数
<div id="refundformcontainer" ng-controller="RefundControl" ng-init="init()">

init函数调用一个服务,该服务返回一个国家/地区列表并填充如下数组:

PossibleCountries: 
[  
    { 
        countryId: 32
        name: ARGENTINA
    }
    ,
    { 
        countryId: 40
        name: AUSTRIA
    }
    .
    .
    ,
    { 
        countryId: 858
        name: URUGUAY
    }
] 

我有这样的选择控件:

<select id="Country" ng-model="Voucher.country" ng-options="v.name for v in PossibleCountries"></select>

选择选项实际上位于文本输入下方,该输入也使用角度

进行绑定
<input type="text" id="vouchernumber" data-ng-model="Voucher.voucherNumber"/>

页面加载时,下拉列表为空,但数组已正确填充。但是,如果我在上面的文本框中键入任何内容,它会在键入第一个字符后更新下拉列表。

为什么在我填充数组时不会立即更新,我该怎么做呢?

1 个答案:

答案 0 :(得分:2)

听起来像是典型的外部消化周期问题。在你获得国家之后,请确保你调用$ scope。$ apply(),或者将请求(jQuery或其他)包装在$ scope附近。$ apply(function(){....});