0

ビュー ページで、knockout.js を使用してデータ バインディングから取得したユーザーの電子メール アドレスを配置しようとしていますが、適切に機能させるのに問題があります。

メールのコード

<a class="icon-envelope icon-white" data-bind="attr:{href:'mailto:' + Email},text:Email"></a>

これが私が持っているもので、現在の結果は次のとおりです。アイコン、次にその横にあるメールアドレスで、メールをクリックしても何も起こりません。役立つヒントをいただければ幸いです。

4

1 に答える 1

3

プロパティへのバインディングを行うときは、通常、テキスト バインディングの場合と同様に、プロパティ名を指定してバインドします。

data-bind="text:Email"

ただし、Email はオブザーバブルであり、実際にはオブザーバブルは文字列ではなくメソッドであることに注意してください。そのため、"mailto:" を Email オブザーバブルの値と連結するなど、何らかの JavaScript をバインディングで直接実行したい場合は、次のようにオブザーバブルを呼び出してその値を取得する必要があります。

data-bind="attr:{href:'mailto:' + Email()}"

考慮すべきもう 1 つの方法は、計算されたオブザーバブルを作成して、よりシンプルなマークアップを作成できるようにすることです。ビューモデルで計算されたオブザーバブルは次のようになります。

self.EmailLink = ko.computed(function() {
    return 'mailto:' + self.Email();
});

次に、マークアップは次のようになります。

<a data-bind="attr:{href:'mailto:' + EmailLink},text:Email"></a>

両方のオプションで作業フィドル: http://jsfiddle.net/tlarson/tG7mg/

于 2013-04-03T04:43:59.950 に答える