我是Angular JS的新手。在我的plunkr中,我有一个typeahead,当我在html标记中有typeahead时有效。但是,当我在我的指令中动态生成html时,typeahead不再有效。
代码在这里: http://plnkr.co/edit/KdrxptYAnpTmKa7ZuKkM?p=preview
并且更进一步,当我传入一个函数时,它仍然不起作用: http://plnkr.co/edit/jqN913hJxuVSFAZxAQt7?p=preview
答案 0 :(得分:2)
我担心这不是你要解决的一个小问题。基本上你正在碰到范围问题。 typeahead
指令在它所放置的DOM元素的范围内计算它的表达式(此处为city for city in cities($viewValue)
)。编写包装器指令的方式使得表达式在指令的范围内进行评估,该范围是隔离的,不会“看到”您的控制器范围。
围绕它的方法有多少,但最简单的方法是在指令范围的$ parent范围内链接$ compiled-ed元素:
var linkedInput = $compile(inputHtml)(scope.$parent);
这是一个有效的插件:http://plnkr.co/edit/fLFwIKNqIRbnesMjZBGj?p=preview
另一种方法是松散隔离范围,并在$parse
服务的帮助下“手动”处理双向数据绑定。