1

次の html のスニペットがあります。

<tbody data-bind="foreach: ptData">
            <tr id="Tr1">
                <td><a data-bind="attr: {href: '/ProjectTrack/IssueGrid.aspx?IssueID='+ptId}">PT Launch</a></td>
                <td nowrap="nowrap" data-bind="text: ptId">
                </td>
                <td nowrap="nowrap" data-bind="text: ptProject">
                </td>
                <td nowrap="nowrap" data-bind="text: ptTitle">
                </td>
                <td nowrap="nowrap" data-bind="text: ptPriority">
                </td>
                <td nowrap="nowrap" data-bind="text: ptType">
                </td>
                <td nowrap="nowrap" data-bind="text: ptStatus">
                </td>
                <td nowrap="nowrap" data-bind="text: ptUpdated">
                </td>
                <td nowrap="nowrap" data-bind="text: ptAssignedTo">
                </td>
                <td style="display: none" data-bind="text: ptUrl">
                </td>
            </tr>
        </tbody>

動的コンテンツがプッシュされた次のviewModelがあります。

var viewModel = {
        ptData: ko.observableArray([])
    };



function DataResult(ptId, ptProject, ptTitle, ptPriority, ptType, ptStatus, ptUpdated, ptAssignedTo, ptDesc, ptUrl) {
        this.ptId = ko.observable(ptId);
        this.ptProject = ko.observable(ptProject);
        this.ptTitle = ko.observable(ptTitle);
        this.ptPriority = ko.observable(ptPriority);
        this.ptType = ko.observable(ptType);
        this.ptStatus = ko.observable(ptStatus);
        this.ptUpdated = ko.observable(ptUpdated);
        this.ptAssignedTo = ko.observable(ptAssignedTo);
        this.ptDesc = ko.observable(ptDesc);
        this.ptUrl = ko.observable(ptUrl);
    }

DataResult オブジェクトに取り込まれたデータを返すための jQuery ajax 呼び出しがあり、各 DataResult オブジェクトは viewModel.ptData にプッシュされます。次の knockout.js コマンドは、HTML スニペットでは機能しないようです:

"attr: {href: '/ProjectTrack/IssueGrid.aspx?IssueID='+ptId".  

私は正確に何を間違っていますか?

4

1 に答える 1

0

+観測可能なプロパティ ( ) を持つ式 (ここでは とのリンクを構築しています) にバインドする場合は、ptIdそれらを関数のように呼び出す必要があります。だからあなたは行方不明です()

<a data-bind="attr: {href: '/ProjectTrack/IssueGrid.aspx?IssueID=' + ptId() }">

ただし、計算されたオブザーバブルを作成してリンクを生成する場合:

function DataResult(ptId, ....) {        
        this.ptId = ko.observable(ptId);
        this.launchLink = ko.computed(function(){
            return '/ProjectTrack/IssueGrid.aspx?IssueID=' + this.ptId()
        }, this);
}

()次に、オブザーバブルに直接バインドするため、バインディングには必要ありません。

<a data-bind="attr: { href: launchLink }">
于 2013-02-26T05:52:04.267 に答える