我刚刚发现,当在每次模型更新的指令中使用无限结构时,模板会因过多的 ng-changes 而变得混乱。这是由 ng-include 引起的(我想通了)。我通过 templateUrl 在我的指令模板中使用了这种东西,它是用 HAML 编写的:
.btn-group{ :name => "FIXME", "ng-required" => "true" }
%a.btn.btn-default.dropdown-toggle{ "data-toggle" => "dropdown", href: "#", "ng-disabled"=>"ngDisabled" }
{{currentValue.name || dropdownPlaceholder }}
%span.caret
%ul.dropdown-menu{ "ng-show" => "!ngDisabled" }
%div{ "ng-repeat" => "model in ngModel", "ng-include" => "'node.html'" }
%script{ :type => "text/ng-template", :id => "node.html" }
%li{ "ng-click" => "selectValue(model)" }
%a
{{model.name}}
%ul{ "ng-repeat" => "model in model.children", :style => "margin-left: 10px;" }
%div{ "ng-include" => "'node.html'" }
在下拉列表的多次点击中,视图似乎保留了旧项目并且似乎另外推送了新项目,即使调试状态模型正在正确更新并且干净(也在指令模型中检查)。我得到一个像这样的错误输出:
https://dl.dropboxusercontent.com/u/21600359/Bildschirmfoto%202013-10-13%20um%2001.31.30.png
有没有人可以给我一个关于如何让 ng-include 刷新和重建指令模板树结构的提示?
我真的很感激!
亲切的问候,亚历克斯