2013-04-17 121 views
3

我通過一個結果集循環和動態地創建模型值,如:Angularjs動態地創建模型

 angular.forEach(users, function(user) { 
      $scope.usersModels.online[user.id] = 0; 
      $scope.usersModels.online[user.id]['checked'] = 'checked'; 
      $scope.$watch('usersModels.online[user.id]', function(val) { 
        console.log(val); 

      }); 
    }); 

我也想觀看這些模型的變化和獲得的價值。這不起作用,然而,任何想法有什麼不對?

謝謝!

編輯:

angular.forEach(users, function(user) { 
     $scope.usersModels.online[user.id] = {}; 
     $scope.usersModels.online[user.id]['value'] = 0; 
     $scope.usersModels.online[user.id]['checked'] = 'checked'; 
     $scope.$watch(function() { 
      return $scope.usersModels.online[user.id]['value']; 
     }, function(val) { 
      console.log(val); 
     }); 
}); 
+0

嘗試從$手錶中刪除''' – Ketan

+0

或 $ scope。$ watch('userModels.online。'+ user.id,...}); – Ketan

+0

或使用函數作爲$ watch的第一個參數。 $ watch。$ watch(function(){return $ scope.usersModels.online [user.id]},/ * handler * /) – Artem

回答

1

您提供的代碼不會給我們一個完整的畫面。有些缺失的部分是:

  • 用於填充users對象
  • ,告訴您如何綁定輸入到模型

因此視圖代碼的代碼,我需要作出一些假設:

  • 用於填充users對象的代碼不是問題的原因。
  • 綁定到checked屬性的輸入是一個複選框。

考慮到的假設,一個直接的問題,我在你的代碼中找到的是你分配一個字符串值,"checked",到checked屬性時,你應該使用一個布爾值。複選框輸入的雙向綁定僅適用於布爾值。

由於我無法看到完整的圖片,因此我很難說這是否是您的代碼唯一的問題。根據你提供的信息,我創建了一個工作plunkr。請注意,我只是分配了一個包含三個用戶標識的對象,以便根據上述假設生成對象users。將其與您的代碼進行比較,並確定其他可能的問題(如果有)。如果您在代碼中發現其他錯誤,請務必報告,因爲它可能對新來者有好處。