2014-09-10 56 views
0

我有一個:如何從ViewModel監視變量並在HTML中更新它?

ng-click="like(photo.Id)" 

...這會激發一個HTTP POST調用數據庫中的數據更新。

照片對象來自ViewModel,可以通過使用前{{photo.Likes}}在HTML中進行訪問。這..給了我喜歡的數量和作品應該是這樣..

但是..我需要更新計數的HTML頁面時,ng-click =「like ....」功能被點擊用戶。

所以..我試圖做這樣的事情:

<span ng-watch="{{photo.Likes}}"></span> 

但很明顯。我不理解不夠好,這個東西是如何工作的。

這裏是$ http調用,它填充$ scope.photo。我是否也需要在這裏添加一些監視邏輯?

$http({ 
    method: 'GET', 
    url: '/api/ViewImage/GetPhotoById/' + $routeParams.id, 
    accept: 'application/json' 
}) 
     .success(function (result) { 
      console.log(result); 
      $scope.photo = result; 
     }); 
+1

只需在類似方法中增加$ scope.photo.likes,並且只需{{photo.likes}}即可。無需額外的手錶邏輯。 – Ronald91 2014-09-10 13:08:33

回答

1

只是把表達的雙重小鬍子像{{ photo.Likes }}使得結合這將更新值後更新您的html。

創建ng-click的方法,這將改變值(我覺得你有這部分的話)

所以,總體來說這將是類似下面:

<span ng-click='like(photo.photoId)'>like</span> 

    <span>{{photo.Likes}}</span> 

並在控制器:

....controller(function($scope, $http) { 

     $scope.photo = null 

     $scope.like = function(photo) { 
      photo.Likes++ 
     }   

     $http({ 
      method: 'GET', 
      url: '/api/ViewImage/GetPhotoById/' + $routeParams.id, 
      accept: 'application/json' 
     }) 
     .success(function (result) { 
      console.log(result); 
      $scope.photo = result; 
     }); 

    }) 
+0

工作就像一個魅力:)有時候...世界比看起來更容易:D – 2014-09-10 13:55:38

0

ng-watch作爲指令,不存在。

您需要創建您的控制器,服務範圍內的東西,指令等使用方法:$scope.$watch

2

你的意思是:

<span>{{photo.Likes}}</span>