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