2014-02-05 67 views
0

目前我正在使用angular來構建原型應用程序,我有一個要顯示的人員列表,因此我爲該人員構建了一個模型。當人們的名單從http加載時,模型被渲染。這種運作良好,在角度上,我怎麼知道何時已經在html中呈現模型

<li class="person" ng-repeat="person in people" > 
    <h1>{{person.displayname}}</h1> 
    <div class="knockout"> 
     <div id="person-{{person.displayname}}"></div> // to add d3.js svg 
     </div>  
</li> 

現在我需要什麼額外只要渲染模型是,使用d3.js對原始的HTML之上再添SVG層。

然而,如下所示的代碼,當模型更新,我試圖添加SVG每個HTML,但它不工作,因爲在那個時候,模型的HTML不會呈現

$http.get(href).success(function(data) {     
     $scope.people= data.people; // update the model 
      var svg = d3.select('#person-'+data.people[0].name) 
        .append("svg");   
    }).error(function(data, status, headers, config) { 

    }); 

目前我做的是設置一個超時加入SVG每個HTML元素,但最好是讓我得到儘快模型的HTML渲染通知完全

感謝

回答

0

的問題在於你的人數組在成功m後呈現方法被留下。這是正常的角度行爲,因爲他們沒有辦法在JavaScript中攔截你的代碼。當您的回調完成時,角度檢查更改。當你嘗試附加你的svg東西時,DOM中不存在id。

您可以使用$scope.$watchCollection("people", function() { ...並在回調中呈現您的東西,但綁定到id的功能會影響角度的工作方式。試着爲d3.js找到一個角度包裝器,你可以不使用id和指令來使用它。

相關問題