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

您可能应该在视图模型中将锚的文本作为可观察的。然后你只需要访问那个 observable(而不是直接访问锚元素的文本)。这为您提供了最大的灵活性。

我做了 2 个示例,因为我不确定您是如何构建视图模型对象的。

两者都可以正常工作: example-1example-2

如果你真的想在你的 data-bind 属性中提取第一个字母,你可以在那里放置一个匿名函数,或者用一个参数绑定你的函数,就像我在这个 fiddle中所做的那样。

我希望其中一种方法适合您的需求。

于 2012-06-09T05:49:56.493 回答
1

我相信你现在已经找到了,莱维特,但这就是你要找的……

请参阅此处的“注 2:访问事件对象或传递更多参数”:http: //knockoutjs.com/documentation/click-binding.html

只需通过点击绑定函数传递 add'l 参数。无论您如何渲染,请务必将第一个参数包含为 $data。

于 2013-06-12T16:29:44.537 回答
0

这对我有用。在您不想明确地“数据绑定”到视图模型中的某些可观察对象的 HTML 标记中,为 HTML 标记分配一个clickchange事件。然后将您的实际函数包装在一个虚拟函数中并传入两个参数dataevent. 你必须同时拥有两者,否则它会失败。就我而言,我使用了更改事件。见下文:

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 回答