AngularJs ディレクティブに複雑なデータを渡す
2023-09-26 20:30:16
質問
以下のようなディレクティブがあります。
<div teamspeak details="{{data.details}}"></div>
これがオブジェクトの構造です。
data: {
details: {
serverName: { type: 'text', value: 'my server name' },
port: { type: 'number', value: 'my port' },
nickname: { type: 'text' },
password: { type: 'password' },
channel: { type: 'text' },
channelPassword: { type: 'password' },
autoBookmarkAdd: { type: 'checkbox' }
}
}
の中のデータに基づいて、リンクを生成するようにしたい。
data.details
オブジェクトの中のデータに基づいてリンクを生成したいのです。
の内部の値にアクセスできないので、残念ながらうまくいきません。
details
オブジェクトの内部の値にアクセスできないからです。
の内部値にはアクセスできないので、残念ながらうまくいきません。
<div teamspeak details="{{data.details.serverName.value}}"></div>
でアクセスできるのですが
{{details}}
.
以下は私のディレクティブコードです。
App.directive('teamspeak', function () {
return {
restrict: 'A',
template: "<a href='ts3server://{{details.serverName.value}}:{{details.port.value}}'>Teamspeak Server</a>",
scope: {
details: '@details',
},
link: function (scope, element, attrs) {
}
};
});
ありがとうございます。
どのように解決するのですか?
読む Angularjs公式サイト の説明をご覧ください。
<ブロッククオートまたは@attr - ローカルスコープのプロパティをDOMの 属性の値にバインドします。DOM属性は文字列であるため、結果は常に文字列となります。 文字列です。attr名が指定されない場合、属性名はローカル名と同じとみなされます。 は、ローカル名と同じであると見なされます。スコープの定義とウィジェットが与えられています。{localName:'@myAttr' }とします。 というウィジェットの定義がある場合、ウィジェットのスコーププロパティである localName には の値を反映します。name 属性が変更されると、ウィジェットスコープの プロパティも変化します。この名前は コンポーネントスコープではなく)親スコープから読み込まれます。
このように文字列だけを送ることができるので、オブジェクトを渡すには、以下のように双方向のバインディングを設定する必要があります。
=
.
scope: {
details: '=',
},
そして、あなたのHTMLは次のようになります。
<div teamspeak details="data.details"></div>
関連
-
[解決済み] angularjsで$compileを操作する
-
[解決済み] AngularJSでデータバインディングはどのように機能するのですか?
-
[解決済み] AngularJSを使用して、ブラウザのコンソールで$scope変数にアクセスするにはどうすればよいですか?
-
[解決済み] AngularJSで$scope.$watchと$scope.$applyを使用するにはどうすればよいですか?
-
[解決済み] AngularJS コントローラにおける 'this' と $scope の比較
-
[解決済み] AngularJS テンプレートにおける if else ステートメント
-
[解決済み] AngularJS で $http.get リクエストにデータを渡す
-
[解決済み] AngularJSでEnterキーを押したときにフォームを送信する
-
[解決済み】AngularJSのディレクティブスコープにおける「@」と「=」の違いは何ですか?
-
[解決済み】AngularJSのスコーププロトタイピング/プロトタイピング継承のニュアンスとは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】angularのonLoadとng-initの違いについて
-
[解決済み] 適用がすでに進行中のエラー
-
[解決済み] AngularJs ReferenceError: $http is not defined
-
[解決済み] AngularJSのシンプルな "Hello, world "が動作しない。
-
[解決済み] ディレクティブ '...' が要求するコントローラ 'ngModel' が見つかりません。
-
[解決済み] createspyとcreatespyobjの違いは何ですか?
-
角型グローバル確認ボックス
-
[解決済み] 入力フィールドにフォーカスを当てるには?
-
[解決済み] AngularJSのng-repeatでキーと値を反復処理する方法は?
-
[解決済み] ng-repeat内のng-click関数にパラメータを追加しても、うまくいかないようです。