Angular md-virtual-repeat不更新已更改的数据

时间:2016-03-29 14:14:56

标签: javascript angularjs angular-material

我使用有角度的 md-virtual-repeat 来加载我的容器中的列表,并且其工作正常,因为列表未被更改。当我更新特定活动ID的列表时, $ scope.listings 会正确更新,但列表不会在视图中更改。当我滚动时,它们会更新。

似乎它没有获得数据更改的触发器。有没有解决方案在数据更新时刷新 md-virtual-repeat

<div id="listingsScrollArea" md-virtual-repeat-container>
   <table>
      <tbody id="listings_body">
        <tr md-virtual-repeat="listing in listings | listingsSort:sortType:sortReverse:searchFields:filterListingsBy:false" class="repeated-item" ng-click="dosomething(listing)">
            <td ng-if="listing.isListing">{{ ::listing.x }}</td>
            ...
            <td ng-if="listing.isListing">{{ ::listing.y }}</td>
        </tr>
     </tbody>
  </table>
</div>

ListingsController方法获取列表。通过重新运行此方法来更新列表。

$scope.getListings = function(event_ids, pageNo) {
   var deferred = $q.defer();
   $scope.isListingsLoading = true;

   ListingsFactory.getListings(event_ids, pageNo).then(function(data) {
      $scope.listings = data.data;
      $scope.listings_info = data.info;
      $scope.isListingsLoading = false;
      deferred.resolve(data);
   }, function(data) {
      deferred.reject(data);
   });

   return deferred.promise;
};

2 个答案:

答案 0 :(得分:2)

您似乎正在使用一次性绑定。这与md-virtual-repeat不能很好地融合。尝试更改此内容:

<td ng-if="listing.isListing">{{ ::listing.x }}</td>

进入这个:

<td ng-if="listing.isListing">{{ listing.x }}</td>

希望这有帮助。

答案 1 :(得分:0)

试试这个,

DateTime myDate = DateTime.Now; //suppose 2016-03-29 16:12:00
strSerialized = JsonConvert.SerializeObject(myDate);

//DO WHAT YOU NEED WITH IT...

DateTime myDateDes = JsonConvert.DeserializeObject<DateTime>(strSerialized);
Label1.Text=myDateDes.ToString();//NO need to convert to LocalTime... it already gives you 2016-03-29 16:12:00 !!! CORRECT !