我对指令 transclude 和 form 指令有疑问。您可能知道,如果您将“名称”属性添加到表单标签,表单将最终进入“范围”,然后您可以检查表单验证等。
当我将表单标签放在使用 transclude 的指令中时,我的问题就开始了。我知道如何使用双向数据绑定来处理这个问题,正如这里提到的https://stackoverflow.com/a/14484903/1029874—— “使用对象而不是原语”
但是我的表单最终进入了包含指令的范围。这是我想做的一个例子。
<div ng-controller="appCtrl">
<widget>
<widget-header>{{model.property}}</widget-header>
<widget-body>
<!-- The form will end up in "widget-body":s scope instead of appCtrl:s scope -->
<form name="appForm" ng-submit="submit()">
<input type="text" required ng-model="model.property" />
<input type="submit" value="submit" />
</form>
</widget-body>
</widget>
</div>
这是小提琴,http://jsfiddle.net/WLksJ/1/
有没有办法可以解决这种行为?
谢谢!