2

私のページにこのリンクがあります-最初の文字でエントリを検索します。アンカータグのテキストを、data-bind属性内のノックアウトのクリックイベントに渡したい。これは可能ですか?

<a href="#" data-bind="click: $parent.getManageableEntries()><%= Convert.ToChar(i + 65)%></a></li>

// here's my javascript method in my knockout view model
function ManageEntriesViewModel() {
    var self = this;

    this.getManageableEntries = function(firstLetter) {
        // i want to pass in the text of the <a> tag as the 'firstLetter' variable
    }
}
4

3 に答える 3

3

おそらく、ビューモデルで観察可能なものとしてアンカーのテキストが必要です。次に、(アンカー要素のテキストに直接アクセスするのではなく)そのオブザーバブルにアクセスする必要があります。これにより、最大限の柔軟性が得られます。

ビューモデルオブジェクトをどのように構成しているかわからなかったため、2つの例を作成しました。

どちらも正常に機能します: example-1example-2

data-bind属性で最初の文字を抽出したい場合は、匿名関数をそこに配置するか、このフィドルで行ったように、関数を引数でバインドすることができます。

これらのアプローチの1つがあなたのニーズに合うことを願っています。

于 2012-06-09T05:49:56.493 に答える
1

Levittさん、もう見つけたと思いますが、これがあなたが探しているものです...

http://knockoutjs.com/documentation/click-binding.htmlの「注2:イベントオブジェクトへのアクセス、またはその他のパラメーターの受け渡し」を参照してください。

クリックバインド関数を介してadd'lparamsを渡すだけです。レンダリング方法に関係なく、必ず最初のパラメーターを$dataとして含めてください。

于 2013-06-12T16:29:44.537 に答える
0

これは私のために働いたものです。ビューモデルで監視可能なものに明示的に「データバインド」されたくないHTMLタグで、clickまたはchangeイベントをHTMLタグに割り当てます。次に、実際の関数をダミー関数でラップし、2つのパラメーターdataとを渡しますevent両方が必要です。そうしないと失敗します。私の場合、変更イベントを使用しました。下記参照:

HTML:

<input data-bind="event: { change:function(data, event) { $parent.SomeFunction(data, event) }}"></input>

そして、JavaScript関数で、次の<input>ようなテキストにアクセスできます。

JavaScript:

function SomeFunction(data, event)
{
    var inputValue = event.currentTarget.value;
    alert(inputValue);
}

<input>したがって、フィールドにテキストを書き込むたびに、SomeFunction()が呼び出され、今書いたテキストに警告が表示されます。

于 2016-06-07T23:10:27.847 に答える