如何设置selectedItem并使用knockout绑定到它

时间:2017-04-21 10:05:35

标签: javascript knockout.js

我有一个如下列表:

<ul id="blogList" data-bind="foreach: Data">
    <li>
        <span data-bind="text: Title"> </span>
        <a href="#" data-bind="click: $parent.viewEntry">View</a>
    </li>
</ul>

淘汰视图模型如下:

var ViewModel = function (data) {
    var self = this;
    ko.mapping.fromJS(data, {}, self);

    this.currentSelected = ko.observable();

    self.viewEntry = function () {
        currentSelected = this;
    }
};

将currentSelected设置为this似乎不起作用,因为当我尝试在其他地方绑定到currentSelected时,我什么也没发生:

<h2 data-bind="text: currentSelected.Title"></h2>

这是绑定到currentSelected的正确方法吗?该列表工作正常,但设置currentSelected并绑定到它是不行的。

1 个答案:

答案 0 :(得分:0)

首先让我们看看你的viewEntry方法。

    self.viewEntry = function () {
        currentSelected = this;
    }

currentSelected未定义它应该是self.currentSelected,因为这是一个可观察的,你不应该将它设置为具有等号的var,而是将其视为函数,因此它应该是{{} 1}}

另一件事是在这部分内部绑定:

self.currentSelected(this)

这又是一个对象,所以要访问它的属性,你需要使用<h2 data-bind="text: currentSelected.Title"></h2> 作为函数,所以它应该是

currentSelected

在这里您可以找到一个工作样本:https://jsfiddle.net/jz9t5vbo/