2014-04-17 24 views
0

Here is a fiddle與我的破碎的代碼。你如何更新指令html並進行編譯以使角度響應?

我創建了一個簡單的小指令(絕不是完整的),它以最簡單的方式呈現日期選擇器。綁定到範圍屬性時,可以通過單擊一天來更新屬性。到現在爲止還挺好。當然,你需要能夠看看其他幾個月。這是事情變得棘手的地方。當有人點擊頂部日期旁邊的'<'或'>'時,我正在重新生成與模板綁定的HTML:屬性。當我這樣做的時候,我試圖進行$編譯,以便所有的角度佈線仍然按照預期運行,但我錯過了我的$ compile操作如何改變元素。我用這個來編譯新的HTML:

element.replaceWith($compile(getCalHMTL(month, year))(scope)); 

這工作,一切都連接好了第二個電話,但是當第二次調用時(通過點擊「>」或「<」一第二次),我收到以下錯誤消息:

Cannot read property 'replaceChild' of null 

就好像元素在link:屬性中爲null。在這個例子中,我應該如何使用$ compile來完成這項工作?

回答

10

當您編譯html時,元素不會被新編譯的html所更新。 如果您將元素重新分配給新編譯的html,它將起作用。

scope.ChangeMonth = function(month, year){ 
    var compiled = $compile(getCalHMTL(month, year))(scope); 
    element.replaceWith(compiled); 
    element = compiled; 
} 

下面是使用更新的小提琴其中工程:http://jsfiddle.net/Pj3f2/