AngularJS - $编译一个元素并将范围传递给它

时间:2014-09-05 08:08:39

标签: javascript angularjs

我有一个简单的指令:

<div my-directive>
    <span ng-click="reveal()">Click Me</span>
    <!-- And other stuff -->
</div>

当我按下Click Me时,会打开一个模式,其中包含一个表单供您编辑某些内容。所有这些内容都是scope.form数据的一部分。现在,假设此对象只有一个名为name的条目。

所以这就是我为我的指令所做的:

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未在指令内更新。

我能做到的最好的是什么?

1 个答案:

答案 0 :(得分:0)

使用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>
相关问题