2016-06-20 12 views
1

角度jsコンポーネントで汎用属性をバインドしようとしました。私のコンポーネントはテキストボックスを含んでいます。私の必要性はhtml属性をコンポーネントテンプレートに渡したいのです。角度js 1.5コンポーネントにHTML属性を渡す

<sample-component generic-attribute="ng-class='hello'"></sample-component> 

これは私のメインのHTMLコンポーネントである 。私はコンポーネントクラスにng-classを渡す必要があります。

(function() { 
     angular.module('myApp').component('sampleComponent',{ 
      bindings: { 
       genericAttribute:'@?' 
       }, 
      controllerAs:'ctrl', 
      controller: 'sampleController',   
      template:'<input type="text" {{ctrl.genericAttribute}} > 
      }); 
})(); 

属性全体を渡してテンプレートにバインドすることは可能ですか?

+0

必要に応じてクラスを属性内に渡すことができます。属性も渡す理由はありますか? – gyc

+1

だから一般的です。つまり、開発者は同じキーにng-class、idなどを渡すことができます。

答えて

1

テンプレート作成機能で$compileを使用してみてください。これにより、あなたは開始されるはずです:

(function() { 
    angular.module('myApp').component('sampleComponent',{ 
     bindings: { 
      genericAttribute:'@?' 
      }, 
     controllerAs:'ctrl', 
     controller: 'sampleController', 
     template: function(tElement, tAttrs) { 
      return $compile('<input type="text"' + {{tAttrs.genericAttribute}}); 
     } 
     }); 
})(); 
+0

回答ありがとうございます。だから私は文字列テンプレートでこれを達成できません。私はできますか? –

+0

この関数は 'template'に文字列を返します。 –

+0

私はこれを試したときに '$ compileが定義されていません'というエラーが表示されます。テンプレートにコンパイル関数を渡すにはどうしたらいいですか? –

関連する問題