我有一個Angular應用程序與外部API進行通信。我能夠從Angular $資源調用生成初始視圖。我的問題是我有一個在ng-click上運行函數的表單。該函數然後再次查詢API,並應該更新相同的範圍變量,但我無法獲得第二個$資源調用的結果來更新範圍變量。
在我的控制器,這是最初的呼叫獲取在最初的視圖顯示了數據:
// Initial weather and geolocation data var Weather = $resource('http://example.com/:method'); Weather.get({method: 'current'}).$promise.then(function(weather) { // Success $scope.weather = weather.weather; $scope.geolocation = weather.location; }, function(error) { // Failure $scope.weather = error; });
到目前爲止好,視圖更新和我可以顯示JSON的API將返回{{ weather.currently.temp }}
以及{{geolocation}}變量中的所有數據。
不過,我有一個表格(它已正確設置去跟控制器)在提交應使另一個請求相同的API,並返回新的數據:
// Search functionality $scope.weatherLookup = function(query) { $http.get('http://example.com/location/' + query).then(function (value) { $scope.weather = value; }); };
此時在視圖中,{{weather}}變量不會在任何地方更新。完全一樣。如果我在weatherLookup
函數中拋出一個console.log
函數,我試圖獲得$scope.weather
的值時得到undefined
,但是當我在同一個console.log()
語句中請求value
時,我得到一個有效的JSON對象。
我怎樣才能得到value
變量分配給$scope.weather
裏面$scope.weatherLookup
,以便它可以更新該值,並讓它冒泡到視圖?