2016-11-23 43 views
0

我有一個表,使用Smart Table中的AngularJs。智能表(AngularJs)異步數據更改沒有更新

我正在嘗試獲取新數據並使用ajax添加到此表中。我在ajax回撥時推送到$scope.rowCollection。但是,爲什麼新添加的數據沒有顯示在表格中? (我正在使用st-safe-src,並且我在st-safe-src中向該集合中添加了新數據。)

另一個問題是:是否必須每次增加$scope.displayedCollection = [].concat($scope.rowCollection);st-safe-src更改? (添加這條線不能解決問題)

我創建了這個Plunkr超時模擬ajax回調。

謝謝!

+0

請添加一些你的代碼,並使一個plunker。這種方式更多的偷窺傾向於幫助。 – alphapilgrim

回答

1

我通過更新超時代碼來修復您的plunkr,以便調用$scope.$apply。您應該使用$scope.$apply確保角度JS組件都被告知,當你使用非角AJAX調用(如jQuery)角JS模型已被更改或核心JS回調(如jQuery):http://plnkr.co/edit/iI7zpSjmB2db4ryHuzp7?p=preview

 // use $timeout service so that we can automatically invoke 
     // the appropriate apply 
     $timeout(function() { 
     $scope.rowCollection.push({firstName: 'Laurent', lastName: 'Renard', birthDate: new Date('1987-05-21'), balance: 102, email: '[email protected]'}); 
     // do I need this? 
     $scope.displayedCollection = [].concat($scope.rowCollection); 
     console.log("executed"); 
     }, 2000, true); 

你也可以這樣做,如下所示:

 setTimeout(function() { 
     $scope.$apply(function() { 
      $scope.rowCollection.push({firstName: 'Laurent', lastName: 'Renard', birthDate: new Date('1987-05-21'), balance: 102, email: '[email protected]'}); 
      // do I need this? 
      $scope.displayedCollection = [].concat($scope.rowCollection); 
     }); 
     console.log("executed"); 
     }, 2000); 
+0

謝謝!我測試過,我不需要'$ scope.displayedCollection = [] .concat($ scope.rowCollection);'。想知道爲什麼互聯網上的很多人添加了該行。 – Automatic