0

次のような属性名を生成しようとしています:

name="id{{myScopeId}}"

これはほとんどの場合に完全に機能しますが、既にカスタム ディレクティブがある要素でこれを行うと、機能しなくなり、結果は "id" のみになります。

このカスタム ディレクティブは、ファイル入力要素に適用され、ファイル名を処理します。

これは機能し、結果は

name="file5" : <input name="file{{myId}}" type="file" />

これはうまくいきません、結果は

name="file" : <input name="file{{myId}}" type="file" file-handler="fileName" />

これが例のjsfiddleです: http://jsfiddle.net/gubrb/1/

firebug生成された属性名を表示するには、または同様のものが必要です。

助けてくれてありがとう

4

1 に答える 1

1

問題はディレクティブの定義にあります。ディレクティブの定義を見ると、スコープ プロパティをオブジェクト ハッシュとして定義すると、新しい Isolated スコープが作成されます。ディレクティブのドキュメントに従って、

{} (オブジェクト ハッシュ) - 新しい「分離」スコープが作成されます。'isolate' スコープは、親スコープから原型的に継承しないという点で、通常のスコープとは異なります。これは、親スコープのデータを誤って読み取ったり変更したりしてはならない、再利用可能なコンポーネントを作成する場合に役立ちます。

あなたのケースではオブジェクトハッシュを使用しているため、親スコープから継承しない html 要素に対して新しいスコープが作成されます。

親スコープ プロパティとディレクティブ分離スコープ プロパティの間に双方向バインディングを作成することで、この問題を修正する新しいフィドルを作成しました。ここで実際のフィドルを参照してくださいhttp://jsfiddle.net/FhM2c/2/

フィドルの関連部分は次のとおりです。

 <input name="file{{myId}}" type="file" file-handler="fileName" file="myId"/><br />

とディレクティブ

 scope : {
            fileHandler : '=',
            myId:'=file'
        },
于 2013-05-11T13:43:53.890 に答える