0

我是 Angular JS 的新手。在我的 plunkr 中,当我在 html 标记中有预输入时,我有一个预输入。但是,当我在指令中动态生成 html 时,预输入不再起作用。

代码在这里: http ://plnkr.co/edit/KdrxptYAnpTmKa7ZuKkM?p=preview

更进一步,当我传入一个函数时,它仍然不起作用: http ://plnkr.co/edit/jqN913hJxuVSFAZxAQt7?p=preview

4

1 回答 1

2

恐怕你要在这里解决的不是一个微不足道的问题。基本上你遇到了范围界定问题。该指令在它所在的 DOM 元素的范围内typeahead评估它的表达式(此处)。city for city in cities($viewValue)您编写包装器指令的方式使得表达式在指令的范围内进行评估,该范围是孤立的并且不会“看到”您的控制器范围。

绕过它的方法有很多,但可能最简单的一种是将您的 $compiled-ed 元素链接到您的指令范围的 $parent 范围内:

var linkedInput = $compile(inputHtml)(scope.$parent);

这是一个有效的插件:http://plnkr.co/edit/fLFwIKNqIRbnesMjZBGj? p =preview

另一种选择是放松一个孤立的范围,并在$parse服务的帮助下“手动”处理 2 路数据绑定。

于 2013-05-02T17:49:49.300 回答