場景描述:
在page中有一個月份select下拉框,點擊下拉框我們可以對應的月份
<select ng-model="month"></select>
在controller中,要依照所選的月份去後端取得對應的資料
$scope.$watch($scope.month, function(){
$http({ url:url,method:'GET',withCredentials:true
}).success(function(data,header,config,status){
// do something
})
});
我的思考:
假設頁面中有多個下拉框,利用$watch一個個監視$scope變化,很不理想。有沒有思路可以不使用$watch,當ng-model變化時,controller中自動發送http請求獲取資料呢?
求高手指點~
你的$watch寫錯了:
下面這種方式也很簡潔:
如果用 ng-change,可能表現好些。記得把上邊的 $watch() 拿掉:
效能差異基本上可以忽略不計。之前做過類似的測試,執行100萬次,差不了1秒鐘。
如果我來做,會用$watch的方式,後期方便維護(ng-change方式 需要改變 控制器和 模板,watch方式只改動控制器就可以了)。
下拉框這種,一般使用
ngChange
指令來處理;ngChangengChange是最佳選擇,原則上設定盡量少的監聽佇列,否則效率會很低。