Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 如何更新指令html并进行编译以使其响应?_Angularjs_Angularjs Directive - Fatal编程技术网

Angularjs 如何更新指令html并进行编译以使其响应?

Angularjs 如何更新指令html并进行编译以使其响应?,angularjs,angularjs-directive,Angularjs,Angularjs Directive,用我的坏代码 我创建了一个简单的小指令(绝对不完整),它以最简单的方式显示日期选择器。当绑定到范围属性时,可以通过单击某一天来更新该属性。到目前为止,一切顺利。当然,你需要看看其他月份的情况。这就是事情变得棘手的地方。当有人单击顶部日期旁边的“”时,我正在重新生成绑定到template:property的HTML。当我这样做时,我试图$compile,以便所有的角度连接仍能按预期工作,但我缺少了$compile操作如何改变元素的一些信息。我用它来编译新的HTML: element.replace

用我的坏代码

我创建了一个简单的小指令(绝对不完整),它以最简单的方式显示日期选择器。当绑定到范围属性时,可以通过单击某一天来更新该属性。到目前为止,一切顺利。当然,你需要看看其他月份的情况。这就是事情变得棘手的地方。当有人单击顶部日期旁边的“”时,我正在重新生成绑定到template:property的HTML。当我这样做时,我试图$compile,以便所有的角度连接仍能按预期工作,但我缺少了$compile操作如何改变元素的一些信息。我用它来编译新的HTML:

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

这是可行的,所有内容都连接到第二个调用,但是当第二个调用发出时(通过在编译html时单击“>”或“),元素不会被更新为新编译的html。 如果您将元素重新分配给新编译的html,它将起作用

scope.ChangeMonth = function(month, year){
    var compiled = $compile(getCalHMTL(month, year))(scope);
    element.replaceWith(compiled);
    element = compiled;
}
下面是一个更新的小提琴,它使用的是有效的小提琴:

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