2013-04-17 56 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

表示仍然不更新表中显示的数据 –