【问题标题】:Expose ng-form in scope and reference in ng-init在 ng-init 的范围和引用中公开 ng-form
【发布时间】:2019-07-10 18:34:24
【问题描述】:

我正在尝试做这样的事情:

<div ng-form="testForm" ng-init="$ctrl.doStuffWithForm(testForm)>

我定义一个表单/将表单发布到当前范围,名称为testForm,并将该表单对象传递给ng-init 中的$ctrl.doStuffWithForm()。但是,似乎正在发生的事情是,在ng-init 时,表单创建和/或testForm 在范围内的创建尚未发生(其他测试向我表明testForm 确实指向 Angular 生命周期中稍后点的表单控制器)。

我有什么办法可以像这样将表单控制器传递给ng-init 中的方法吗?还是我应该以另一种方式来做?是否有类似于ng-init 的属性,但在生命周期的后期使用?我要做的基本上是在带有ng-form 的元素上使用ng-repeat,并在初始化每个元素时将每个表单传递给控制器​​方法。

【问题讨论】:

    标签: angularjs angularjs-forms angularjs-templates


    【解决方案1】:

    避免使用$ng-init 指令。只需将 ng-form 分配给 $ctrl 对象的属性即可:

    <div ng-form="$ctrl.testForm">
        {{$ctrl.testForm.$dirty}}
    </div>
    

    【讨论】:

    • 这对我来说在其他情况下也有效,但在这种情况下,我想在ng-init 的表单上调用一个方法。不过感谢您的建议!
    【解决方案2】:

    通过将ng-init 放在ng-form 元素的子元素中,我能够达到我想要的结果:

    <div ng-form="testForm">
        <div ng-init="$ctrl.doStuffWithForm(testForm)></div>
    </div>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-10
      • 2013-11-27
      • 2016-07-01
      • 2016-03-05
      • 1970-01-01
      相关资源
      最近更新 更多