【问题标题】:Data binding in AngularJS using views built on-the-flyAngularJS 中使用动态构建的视图进行数据绑定
【发布时间】:2014-04-09 12:29:43
【问题描述】:

上下文:

我正在 AngluarJS 中构建一个带有选项卡内容的向导,其中每个选项卡都是向导中的一个步骤。这些步骤通过 laravel 控制器从数据库中检索,并使用 ng-repeat 构建向导。每个选项卡都包含一个刀片视图,该视图由 laravel 控制器呈现,然后使用 ng-bind-html 包含在表单中。

简体html:

<div class="tab-content">
   <div ng-repeat="task in task_list" class="tab-pane" id="tab{{task.step}}">
       <div ng-bind-html="task.rendered_view"></div>
   </div>
</div>

问题:

在向导的每个步骤中,我都需要验证表单内容——最好是通过 Angular POST 到 laravel 控制器,然后显示返回的错误。但是,由于输入位于 render_view 中,我无法使用 ng-model 检索它们以在 AngularJS 中绑定它们。

我对 Angular 还很陌生,所以可能会遗漏一些明显的东西,但我找不到解决方案。关于包含视图的不同方法的任何建议?还是不同的验证方法?向导结束时的最终提交工作正常,因为表单提交按钮将输入从所有选项卡发布到控制器,但我想在中间步骤中包括验证。

【问题讨论】:

    标签: javascript php angularjs validation laravel-4


    【解决方案1】:

    我可能误解了这个问题,但也许可以通过在渲染视图中使用ng-init 来解决。

    所以如果渲染的视图看起来像这样:

    <div ng-init='validateReponses()'>
        <span>Your inputs and other content here</span>
    </div>
    

    然后每次将 div 插入 DOM 时都会运行 validateResponses 函数。

    编辑:我在发布后突然想到我不确定 ng-bind-html 是否创建了新范围。从文档中,我不认为它确实如此,但如果它确实如此,那么您可以改为调用$parent.validateResponses()

    【讨论】:

    • 不,该函数不会被调用...如果调用了,我相信我也能看到 ng-model 绑定。在渲染视图中未识别出任何角度。它不是范围的事情,因为我也尝试为视图提供自己的控制器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多