我正在使用Angular(1.6.4)選擇一個網站上工作。如果第一次請求,則select元素的內容將通過REST加載。但是REST調用的響應被緩存,以便後面的調用從內存中加載數據。如果我加載網站的select元素是空的,我不能選擇任何值。如果我使用緩存的數據再次訪問站點,則選擇框允許您從列表中選擇項目。如果我將REST調用重定向到包含第一次嘗試的數據的文件,我可以按預期方式選擇項目角度選擇不更新,如果模型更改
所以看起來代碼原則上工作正常,但如果模型更新太晚,select元素會沒有注意到這些變化。
這裏是我使用的代碼:
<select ng-model="myData" chosen
class="select--chosen"
ng-change="handleSelection()"
ng-options="myData as myData.value for myData in dataArray">
</select>
控制器代碼如下所示(網站打開時調用):
$scope.dataArray = [];
//$scope.dataArray = [{value : "just a test value"}];
$scope.$watch('dataArray ', function() {console.log("dataArray was changed...")}, true);
getArray();
function getArray() {
DataFactory.getArray().then(function (data) {
$scope.dataArray = data;
});
}
我拿到手錶消息時,我加載網站首次。在尋找解決方案時,我發現了幾個提示,但沒有一個爲我工作。這是我的嘗試:
1)添加
$scope.$apply(function(){ /* code */ });
設置dataArray中的該功能內或稱之爲手錶功能的內部。在這兩種情況下,我得到的摘要已更新或使控制檯上的錯誤,這表明它時並不需要使用範圍。$應用設置dataArray中的=數據後
2)使用
$scope.onChange($scope.dataArray);
。
不幸的是沒有工作。如果我取消註釋:
$scope.dataArray = [{value : "just a test value"}];
我可以選擇加載頁面,並選擇視圖後,該條目則顯示dataArray中的第一項,並事後我可以訪問整個列表,並從中選擇項目。
所以我想知道我能做些什麼來在數據可用後更新選擇視圖。通過添加一個監聽器或手動調用select視圖來更新(),refesh()等等。有沒有這樣的功能?
工程細https://plnkr.co/edit/mLZRxl4fektVAGnLGaAJ?p =預覽)。 – georgeawg