3

我正在使用 angular js 和 cake php 构建一个简单的发票模块。

使用 ng 重复项目字段 - 在我的视图中重复,如下所示

    <div ng:controller="ItemsCtrl" ng:app>
<div class="row-fluid items" >
    <hr>
    <ul class="invoice_items" ng:init="invoice={items:[{serial:'',details:'',qty:0,unit:'',rate:0,discount:0,amount:0}],pf:0}">
    <li ng:repeat="item in invoice.items">
    <div class="clear"></div>
    <div id="items_row">
        <div class="field span1">
                            <?php   
                        echo $this->TwitterBootstrap->input("Number", array(
                            "input" => $this->Form->text("Item.{{\$index}}.serial" , array('class' => 'serial span1' ,'placeholder' => 'S.No' , 'ng-model' => 'item.serial' , 'value' => '{{ $index + 1 }}' , 'readonly' => 'readonly' ))
                        )); ?>
        </div>

最后关闭适当的标签

我的模型中有以下代码用于验证 -

public $validate = array(
    'id' => array(
        'notempty' => array(
            'rule' => array('notempty'),

        ),
    ),
    'serial' => array(
        'notempty' => array(
            'rule' => array('notempty'),

        ),
    ),
    'details' => array(
        'notempty' => array(
            'rule' => array('notempty'),

        ),
    ),
    'quantity' => array(
        'notempty' => array(
            'rule' => array('notempty'),

        ),
        'naturalnumber' => array(
            'rule' => array('naturalnumber'),
            'message' => 'Please enter a valid quantity'

        ),
    ),
    'rate' => array(
        'notempty' => array(
            'rule' => array('notempty'),

        ),
        'numeric' => array(
            'rule' => array('numeric'),

        ),
    ),
    'discount' => array(
        'numeric' => array(
            'rule' => array('numeric'),

        ),
    ),
    'amount' => array(
        'notempty' => array(
            'rule' => array('notempty'),

        ),
        'numeric' => array(
            'rule' => array('numeric'),

        ),
    ),
);

问题是 ng-repeat 指令之外的字段会根据需要进行验证,但由于 ng-repeat 内的字段在每次页面加载时都会被初始化,因此 cakephp 验证不会应用于它们。

你们看到任何解决这个问题的方法吗?可能是我的整个架构方法是错误的?

4

1 回答 1

1

我认为你应该改变解决问题的方式。

使用 CakePHP 为前端创建一个 REST API 和 AngularJS。它会更容易(如果你想在未来迁移你的堆栈,例如 Dart 或 NodeJS,会更好)。

您可能想阅读:https ://github.com/hantsy/angularjs-cakephp-sample

希望能帮助到你。

于 2014-03-25T03:15:59.200 回答