Knockout.js 获取 location.href 对象的属性

问题描述

我最近发现了 Knockout 并且我正在努力在 foreach 中获取对象的属性

这是我的代码

<table class="table">
<thead>
    <tr>
        <th>Name</th>
        <th>Created By</th>
    </tr>
</thead>
<tbody data-bind="foreach: assets">
    <tr class="assets" data-bind="click: $parent.detailPage">
        <td>
            <span data-bind="text: FileName"></span>
        </td>
        <td>
            <span data-bind="text: CreatedBy"></span>
        </td>
    </tr>
</tbody>

和我的脚本:

<script>
function viewmodel(assets) {
    var self = this;

    self.assets = assets;

    self.detailPage = function (asset) {
        location.href = '@Url.Action("Details","Assets")/' + asset.Id;
    };
};

var jsonModel = new viewmodel(@Html.Raw(Json.Encode(Model)));
var viewmodel = ko.mapping.fromJS(jsonModel);
ko.applyBindings(viewmodel);

在我的资产中,我有一个 ID,我想使用我单击的对象的 ID 打开我的视图。

但是当我执行那个时,url变成:http://localhost:62677/Assets/Details/[object Object]

有没有正确执行此操作的想法?

谢谢!

解决方法

看起来 asset.Id 是一个对象。 尝试调查为什么它是对象而不是某个数字或字符串。

,

假设 asset.Id 是一个淘汰的 observable,试试这个

self.detailPage = function (asset) {
        location.href = '@Url.Action("Details","Assets")/' + asset.Id();
    };