2013-04-17 55 views
0

我有一些json附加到頁面上的數據屬性。 json數據用於在angularjs中構建表。 我正在使用coffeescript和haml。Angularjs與數據屬性對象的數據綁定

app = angular.module("myApp", []) 

    app.controller "TableCtrl", ($scope) -> 
     $scope.table = $("#mydata").data("myjson") 


    #table{"ng-app"=>"myApp","ng-controller" =>"TableCtrl"} 
     %table 
     %tbody 
      %tr{"ng-repeat"=>"(i,item) in table" }}"} 
      %td {{item.name}} 

該頁面將數據加載到表中。在頁面的其他地方,數據屬性上的json可以由用戶使用jquery進行更改。我怎樣才能在json數據和表之間進行雙向綁定?即我希望表格隨着數據屬性上的json在本地更改而改變。

+0

這是一個非常奇怪的用例。爲什麼數據來自jQuery而不是AngularJS?如果在全部*可能的情況下,您應該將數據導入模型/服務。 –

+0

我正在更新一個充滿jquery的舊應用程序,只是試圖通過它理解不同的部分 –

+0

我會嘗試將數據作爲第一優先級來提取;否則會出現更多令人頭痛的問題。 AngularJS與jQuery非常不同。 –

回答

0

您需要告訴AngularJS觀察$("#mydata").data("myjson")的任何更改,然後在更改發生時更新$scope.table。嘗試將下面的代碼添加到您的控制器(對不起,我不知道咖啡標記)。

$scope.$watch(
    function() { return $("#mydata").data("myjson");}, 
    function(newJson) { 
     $scope.table = newJson; 
    }, 
    true 
); 
+1

將字符串傳遞給'$ watch'只適用於作用域屬性。你需要改用一個函數。 –

+0

@JoshDavidMiller - 對,我粗心!感謝您指出。 – tamakisquare

+0

表示仍然不更新表中顯示的數據 –