你如何更新指令html和编译,以便角度响应?

son*_*lis 0 angularjs angularjs-directive

这是我破碎的代码的小提琴.

我已经创建了一个简单的小指令(绝不是完整的),以最简单的方式呈现日期选择器.绑定到范围属性时,可以通过单击某一天来更新该属性.到现在为止还挺好.当然,您需要能够查看其他月份.这是事情变得棘手的地方.当有人点击顶部日期旁边的"<"或">"时,我正在重新生成与模板绑定的HTML:属性.当我这样做时,我正在尝试$ compile,以便所有角度连接仍然按预期运行,但我遗漏了一些关于我的$ compile操作如何更改元素的内容.我用它来编译新的HTML:

element.replaceWith($compile(getCalHMTL(month, year))(scope));
Run Code Online (Sandbox Code Playgroud)

这是有效的,一切都连接到第二次调用,但是当第二次调用(通过第二次点击'>'或'<')时,我收到以下错误消息:

Cannot read property 'replaceChild' of null
Run Code Online (Sandbox Code Playgroud)

好像元素在link:property中为null.在这个例子中,我应该如何使用$ compile来完成这项工作?

and*_*urk 10

编译html时,元素没有使用新编译的html进行更新.如果您将元素重新分配给新编译的html,它将起作用.

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

这是一个更新的小提琴使用的工作:http://jsfiddle.net/Pj3f2/