Javascript AngularJS-$compile编译一个元素并将作用域传递给它
我有一个简单的指示:Javascript AngularJS-$compile编译一个元素并将作用域传递给它,javascript,angularjs,Javascript,Angularjs,我有一个简单的指示: <div my-directive> <span ng-click="reveal()">Click Me</span> <!-- And other stuff --> </div> scope.reveal = function() { var el = $compile('<input type="text" ng-model="scope.form.name" />')(
<div my-directive>
<span ng-click="reveal()">Click Me</span>
<!-- And other stuff -->
</div>
scope.reveal = function()
{
var el = $compile('<input type="text" ng-model="scope.form.name" />')(scope);
// Now launch the modal
}
因此,模态确实打开了,scope.form.name
的内容显示正确。但是,如果关闭模式并再次打开,则不会保存该值(即,scope.form.name
不会在指令内更新)
我能做的最好的是什么?使用angularjs,您通常不会编译并向DOM添加元素。您应该在模板中声明表单,并将ng show绑定到作用域上的属性以显示/隐藏表单
<div my-directive>
<span ng-click="form.show = true">Click Me</span>
<form ng-show="form.show">
<input type="text" ng-model="form.name" />
<form>
</div>
点击我
您的指令是否有可能在“隔离”范围内运行?请在中举例说明fiddle@NarekMamikonyan好的,我很快就来。好的,我想我们到时候会等你的提琴。只是好奇,你试过检查巴塔朗的望远镜吗[?这可能会给你一些线索,告诉你一旦关闭模式,作用域会发生什么。是的,我意识到了。但我实际上有一个模式模块,用于任何类型的弹出式面板。现在,在这个页面中,我有一个用户列表。单击一个用户,我想打开模式,加载用户配置文件并编辑它,然后保存并删除所以在此之前我无法加载表单。