2016-03-22 3 views
0

私は角1.2から1.3のmigratinアプリです。そして、私はremoveControllとaddControll関数の異なる動作の問題に直面しています。角1.2から1.3(またはそれ以上)の形式removeControllとaddControllの問題

私はこのような指示を持っています。これは、登録された要素をフォームにエスケープするものです(理由は問いません。ただ必要です)。

<div name="es.caped" ng-model="es.caped" esc-dir></div>  

link: function link($scope, $element, $attrs, $ctrl) { 
     var nameAttr = $attrs.name.replace(/([ #;?&,.+*~\':"!^$[\]()=>|\/@\{\}])/g, '\\$1'); 
     $ctrl[1].$removeControl($ctrl[0]); 
     $ctrl[0].$name = nameAttr; 
     $ctrl[1].$addControl($ctrl[0]); 
    } 

と角1.2募集結果{"es\\.caped":{}}が得られます。 Plunker 1.2 version
1.3版 - - Plunker 1.3 version PlunkerはJSONとして結果フォームを印刷します
(1.3出力
1.2バージョンを: しかし1.3は、それが見どのように動作するかの詳細情報については、私の古い値{"es.caped":{}}

を与えますより大きいですが、値を見つけることができます)。

は、私はほとんど何も存在しないのドキュメントにとバージョン1.2と1.3を検索しようとしたが、1.5のために、私が見つかりました:

Note that the current state of the control will not be reflected on the new parent form. This is not an issue with normal use, as freshly compiled and linked controls are in a $pristine state. However, if the method is used programmatically, for example by adding dynamically created controls, or controls that have been previously removed without destroying their corresponding DOM element, it's the developers responsibility to make sure the current state propagates to the parent form

そして、私はすでにこの問題を解決するために多くの時間を費やして、ないと成功。私は変更を伝える方法を知らない。私はどんな助けにも喜んでいます。

注:角度1.4と1.5で試してみました。 1.3と同じ動作をします。私の最終的な移行の状態は1.5ですが、私はバージョン別に移行ガイドのバージョンに従っています。

答えて

0

これで問題を解決できます。エレメントの名前が変更され、コントローラーに反映されます。

link: function link($scope, $element, $attrs, $ctrl) { 
     var nameAttr = $attrs.name.replace(/([ #;?&,.+*~\':"!^$[\]()=>|\/@\{\}])/g, '\\$1'); 
     $attrs.name = nameAttr ; 
} 
関連する問題