Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.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
Javascript AngularJS-$compile编译一个元素并将作用域传递给它_Javascript_Angularjs - Fatal编程技术网

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好的,我很快就来。好的,我想我们到时候会等你的提琴。只是好奇,你试过检查巴塔朗的望远镜吗[?这可能会给你一些线索,告诉你一旦关闭模式,作用域会发生什么。是的,我意识到了。但我实际上有一个模式模块,用于任何类型的弹出式面板。现在,在这个页面中,我有一个用户列表。单击一个用户,我想打开模式,加载用户配置文件并编辑它,然后保存并删除所以在此之前我无法加载表单。