2016-12-17 14 views
0

コントローラで更新すると、Angularがコンポーネント内の変数を飾り付けない理由がわかりました。 ctrl.myVar.attr = "decorated_" + ctrl.myVar.attr; 次のような例では、 http://plnkr.co/edit/cV18oB64oqiO9fYHrhCz?p=preview角度でモデルを更新しても角型でコンポーネント変数が更新されない

+1

'ctrl.myVar.attr =" decorated_ "+ ctrl.myVar.attr;はコントローラがインスタンス化されると** once **と呼ばれます。変数を更新しても、コンポーネントまたはそのコントローラが再インスタンス化されたり、再度実行されることはありません。そのため、行は決して再度実行されません。 – Claies

+0

@pumbosha、実際には値が変化しています。正確に何をしたいのですか? – SaiUnique

答えて

0

は一方向バインド属性の変化に対応するために$onChangesライフサイクルフックを使用してください。

0

質問が不明です。しかし、私は理解していることに答えようとしています。

Angularは、更新中にコンポーネント内の変数を修飾しません。あなたはchangeAttrs機能でコンポーネントを呼び出さなかったからです。これを行うには、コンポーネントを関数にコールしてください。 AngularJS Comprehensive Directive API Reference -- Life-Cycle Hooksを参照してください

app.component("mycomp", { 
    template: "Hello {{$ctrl.name}}<br/>", 
    bindings: { 
    myVar: "<myvar" 
    }, 
    controller: function() { 
    this.$onChanges = function(changeObj) { 
     if (changeObj.myVar) { 
      this.name = "decorated_" + changeObj.myVar.currentValue; 

     } 
    } 
    } 
}); 

DEMO on PLNKR

関連する問題