Here is a fiddle我的代码破碎。
我创建了一个简单的小指令(绝不是完整的),以最简单的方式呈现日期选择器。绑定到范围属性时,可以通过单击某一天来更新该属性。到现在为止还挺好。当然,您需要能够查看其他月份。这是事情变得棘手的地方。当有人点击'<'时,我正在重新生成与模板绑定的HTML:属性或'>'在顶部的日期旁边。当我这样做时,我正在尝试$ compile,以便所有角度连接仍然按预期运行,但我遗漏了一些关于我的$ compile操作如何更改元素的内容。我用它来编译新的HTML:
element.replaceWith($compile(getCalHMTL(month, year))(scope));
可行,所有内容都连接到第二个电话,但是当第二次通话时(通过再次点击'>'或'<'),我收到以下错误消息:
Cannot read property 'replaceChild' of null
就好像link:property中的element为null。在这个例子中,我应该如何使用$ compile来完成这项工作?
答案 0 :(得分: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/