【问题标题】:AngularJS 1.6.1 form and ngIncludeAngularJS 1.6.1 表单和 ngInclude
【发布时间】:2017-01-04 12:37:53
【问题描述】:

Angular 1.6.1 在我的项目中破坏了 ngInclude。我使用 ui-bootstrap 0.14 作为选项卡。

<uib-tabset class="col-xs-11 " id="detailsContainer" >
    <uib-tab active="$root.isFirstTabActive" heading="{{'general.BASICS' | translate}}">
        <ng-include src="'QM-Technik/tickets/detailsTabs/grundlagen.html'"></ng-include>
    </uib-tab>
</uib-tabset>

我的模板是这样的表单:

<form class="form-horizontal" name="formular.grundlagen">
    <div class="col-sm-6">
        <div class="form-group">
            <label class="control-label pflichtFeld col-sm-4" translate="general.NUMBER"></label>
            <div class="col-sm-7">
                <input type="number" class="form-control" ng-model="ticket.tt_tik_nr" readonly />
            </div>
        </div>
</form>

我的前端仍在运行,但在控制台中,我在一秒钟内收到这 2 条消息 100 次:

未捕获的错误:[$rootScope:infdig] http://errors.angularjs.org/1.6.1/$rootScope/infdig?p0=10&p1=%5B%5D

错误:[ng:cpws]http://errors.angularjs.org/1.6.1/ng/cpws

【问题讨论】:

  • 试过没有翻译的东西来排除这种情况?尝试过不同版本的 Angular / ui-bootstrap?
  • 是的。如果我删除 name="formular.grundlagen" 问题就消失了。但我需要它来验证表单。
  • 在加载模板时,您是否有任何代码以某种方式修改formular.grundlagen 中的任何数据?试图在 Plunker 中重现该问题。
  • 我没有修改的代码,但有检查 formular.grundlagen.$dirty 的代码。我刚刚找到了解决方案并在这里分享。

标签: javascript angularjs angular-ui-bootstrap angularjs-1.6


【解决方案1】:

问题出在表单名称上。 Angular 1.6 不允许添加子对象作为表单名称。 如果您使用一个简单的字符串(例如“grundlagen”),它会以 $scope.grundlagen 的形式添加到您的 $scope 中并且没有问题。 如果您使用像“formular.grundlagen”这样的对象(即使您在控制器中预定义了$scope.formular = {};),它也会导致错误消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-28
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    相关资源
    最近更新 更多