0

我在处理选择更改时遇到了困难,就像在跨度/按钮/淘汰赛中所做的任何事情上的“点击”处理程序中的构建一样。简单的场景,当当前选定的项目发生变化时,我想调用一个函数来引用 foreach 中的相应项目:

<ul id="storeList" data-bind="foreach: $data">
<li>
<span data-bind="text: StaticName, click: $root.storeModel.editStore"></span>
</li>
</ul>

在 editStore 中,store 是对完整当前 store 对象的引用:

p.editStore = function(store, event) {
            location.hash = 'Butiker/Edit/' + ko.utils.unwrapObservable(store.StoreId);
            var el = event.target;

            p.currentEditItem(store);
            p.currentEditElement(el);
        }

现在我想用一个选择来代替:

<select data-bind="options: $data, optionsText: 'StaticName', optionsValue: 'StoreId', optionsCaption: 'Choose store', event : { change: $root.storeModel.editStore }"></select>

这可行,但在 editStore 函数中,没有任何内容作为第一个参数传递。

我可以在选择上做 value: currentEditItem,但是当该 observable 的数据更新时,我想做额外的事情。我不能订阅它,因为那只会给我那个特定属性的新字符串值……而不是对象本身。

为什么 click 必须给我我需要的一切,而 select change 让我处理我感兴趣的对象的一小部分?

4

1 回答 1

0

编辑:你是对的,我对selectedOptions.

不过,这似乎可行:http: //jsfiddle.net/8pVuV/2/返回console.log对象,而不是字符串。

于 2012-05-22T12:55:16.030 回答