Asp.net mvc 无法理解如何将属性放入Knockout.js中的单击

Asp.net mvc 无法理解如何将属性放入Knockout.js中的单击,asp.net-mvc,knockout.js,Asp.net Mvc,Knockout.js,据我所知,这应该很简单。 我正试图在表格中创建一行可单击的行,为此我想在我的tr上使用location.href 我的href是用我从数据绑定获得的Id构建的。如何组合单击和属性。我觉得我错过了一些明显的东西 <tr data-bind="click : attr:{'location.href' : '/project/details/' + m.Id}"> 您在这里混淆了两个淘汰概念 attr绑定用于将该元素的HTML属性绑定到模型上的值 click绑定是一个将在click事件

据我所知,这应该很简单。 我正试图在表格中创建一行可单击的行,为此我想在我的tr上使用location.href

我的href是用我从数据绑定获得的Id构建的。如何组合单击和属性。我觉得我错过了一些明显的东西

<tr data-bind="click : attr:{'location.href' : '/project/details/' + m.Id}">

您在这里混淆了两个淘汰概念

attr
绑定用于将该元素的HTML属性绑定到模型上的值

click
绑定是一个将在click事件中调用的函数(通常您会在视图模型上引用一个函数,但您可以将匿名函数内联)

要做你想做的事,你应该做:

<tr data-bind="click : gotoProject">
当然,有一百万种方法可以连接这样的东西,在没有看到视图模型的代码的情况下,我不能给出更多的细节

还与
attr
绑定相关,因此您可以看到它应该如何工作。如果您没有将其作为click的值,而是在顶层:

<tr data-bind="attr:{'location.href' : '/project/details/' + m.Id}">

这将导致以下结果(因为它不是一个有效的属性名,所以不会,但您得到了要点)


没问题。我想告诉你们的唯一一件事是小心处理这个
,若你们不自信的话,在JS中会很混乱,而在淘汰赛中,由于它是如何绑定的,你们会加倍自信。我强烈建议使用
var self=this在viewmodels中为您的理智(此处提到)提供方法。
<tr data-bind="attr:{'location.href' : '/project/details/' + m.Id}">
<tr location.href="/projecct/details/thisID">