質問

私がやろうとしていることを説明しましょう。 私は、提供されたデータ配列とConfigオブジェクトに基づいてテーブルを構築するための実際の動的なNGディレクティブを構築しています。私が知りたいことは、スコープ内のオブジェクトに基づいて動的に属性を割り当てる方法です。

のような範囲のどこかにオブジェクトがあるとしましょう。
$scope.inputs.myInput = {
    type : "number",
    size : 3,
    min : 0,
    ...
}
.

など、私のテンプレートのどこかで

<tr><td>other stuff</td><td><input {{assign the attributes somehow}} /></td></tr>
.

と結果は次のようになります:

<tr><td>other stuff</td><td><input type='number' size='3' min='0' ... /></td></tr>
.

これはどういうわけか可能ですか?

試したもの:現在、私は行ごとに入力配列内の各項目の入力を作成することができ、type={{type}}によってタイプを割り当てることができますが、HTML属性は入力要素の種類ごとに異なる場合があります。要素「ハードコードされた」方法に属性を割り当て、ここで動けなくなった。

フィードバックのために事前にありがとう!

役に立ちましたか?

解決

あなたのためのプランクです

.directive('dynamicAttributes', function($parse){
  return function($scope, $element, $attrs) {
    var attrs = $parse($attrs.dynamicAttributes)($scope);
    for (var attrName in attrs) {
      $attrs.$set(attrName, attrs[attrName]);
    }
  }
})
.

属性名と値のペアのオブジェクトをdynamic-attributes属性に渡すだけで、ディレクティブはそれを追加します。

dynamic-attributes="{style:'background: red;height:200px;', class: 'red'}"
.

あなたの場合のようなものになるでしょう:

<input dynamic-attributes="inputs.myInput">
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top