2017-01-13 3 views
0

私はng-ifを使用して、フォームcompoenentを表示および非表示にしています。コンポーネントが破棄されると、それを親から削除して配列に配置しますが、nullに渡した双方向バインドオブジェクトの値も設定します。

以下私が使用していたコードの簡易版である:これはヌルとして値をログに記録

app.component('textInput', { 
    bindings: { 
     model: '=' 
    }, 
    require: { 
     parent:'^formPanel' 
    }, 
    templateUrl: 'app/shared/form/formFields/textInput/textInputView.html', 
    controller: function() { 

     var self = this; 

     this.$onInit = function() { 
      this.parent.addField(this); 
     }, 
     this.$onDestroy = function() { 
      this.model = null; 
      console.log(this); 
      this.parent.removeField(this); 
     } 
    } 
}); 

が、成分の範囲外で、角度変更を登録していないと私はできないのです$ onDestroyイベントのために既に進行中のイベントがあるため、ダイジェストサイクルを実行します。

答えて

0

これを達成するためにコールバックを使用できるはずです。

だから、親スコープでこれに類似した機能(これはコールバックです):コンポーネントのHTMLファイル内に

$scope.setMyModel = function(val){ 
    $scope.myModel = val; 
}; 

そして、このコンポーネントへのコールバックを渡す:

<test-input 
    my-model="myModel" 
    my-callback="setMyModel " 
/> 

これはコンポーネントのバインディングでコールバックを収集するためのものです。

bindings: { 
    myModel: '=', 
    myCallback: '=' 
}, 

$ onDestroy機能でコールバック:

this.$onDestroy = function() { 
    this.myCallback(null); 
    this.parent.removeField(this); 
} 

は、より良い方法があるかもしれませんが、これは親スコープがmyModelが保持する値を設定する制御に常にあることを保証します。

+0

@AndySimmsフィードバックはありますか? –

関連する問題