4

是否可以在“点击”绑定中设置 observable?

<div data-bind="click:toolbarBottomTabs_selectedIndex(0)">

其中toolbarBottomTabs_selectedIndex 是一个可观察的。

4

4 回答 4

7

尝试这个:

 <div data-bind="click: toolbarBottomTabs_selectedIndex.bind($data, 0)">
于 2013-11-05T09:03:08.927 回答
2

编写“click: function(){...}”并不是最好的解决方案。我相信这会更好一些,即使它是几行代码。

<div data-bind="click: resetIndex">....</div>

在您的视图模型中定义:

function resetIndex(){
    toolbarBottomTabs_selectedIndex(0);
}
于 2013-11-05T09:35:34.350 回答
1

这是可能的,但我认为这不是一个正确的选择:

<div data-bind="click:toolbarBottomTabs_selectedIndex.bind($data, 0)">

Bind允许以特定值调用您的函数(observable 是一个函数)。bindthis的第一个参数是对象的值,第二个是函数的第一个参数。

于 2013-11-05T09:03:27.630 回答
0

我同意安德斯的观点……

MVVM 的重点是将视图与视图逻辑解耦,以便对其进行测试、重用等。

以这种方式操作视图模型中包含的数据是可行的,但是并不理想。

<div data-bind="click: function() { toolbarBottomTabs_selectedIndex(0) }">

Knockout 提供了一种更简洁的方法来使用不显眼的事件处理程序来实现这一点

在你的例子中,你应该做这样的事情......

<div id="clickme">...</div>

...然后在您的 javascript 中包含以下内容

$('#clickme').on('click', function(e) {
    ko.dataFor(this).toolbarBottomTabs_selectedIndex(0);
});
于 2013-11-05T10:14:53.220 回答