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

时间:2014-04-17 20:45:14

标签: angularjs angularjs-directive

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来完成这项工作?

1 个答案:

答案 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/