那么ko.observable()究竟干什么?这是情况。你可以看到,我有一个布尔ko.observable()。我点击设置为该值,所以它应该切换包含在它的方法调用中的真假的值。在这种情况下,ko.observable究竟在做什么?
当我看到数组被填充到开发人员工具中时,我看到所选内容不是= true或false,而是=相当广泛的函数,并且我无法在该内部的任何位置找到true或false值,所以我不知道什么时候使用ko.observable()
我所期望的是tab.selected是tabArray [tab] .selected的值,并且当页面加载时,正确。但是,在写出文本值时,单击tabArray [tab] .selected = [Object object]后。我尝试使用:
<pre data-bind="text: JSON.stringify(ko.toJS(tab.selected)"></pre>
(这里找到:http://www.knockmeout.net/2013/06/knockout-debugging-strategies-plugin.html),并打印出真或假,我需要在其他地方做这个,我需要的是价值?因为我不确定ko.observable在做什么。
define(['knockout', 'text!../Content/SSB/PartialViews/MainContent.html'], function (ko, MCTemplate) {
ko.components.register('MainContent', {
template: MCTemplate
});
var MainViewModel = {
tabArray: [
{ name: 'bob', selected: ko.observable(true) },
{ name: 'bib', selected: ko.observable(false) },
{ name: 'bab', selected: ko.observable(false) },
{ name: 'bub', selected: ko.observable(false) },
{ name: 'beb', selected: ko.observable(false) },
]
};
ko.applyBindings(MainViewModel);
return {
viewModel: MainViewModel
}
});
的HTML
<div id="tab">
<ul class="nav nav-tabs" role="tablist">
<!--ko foreach: {data: $parent.tabArray, as: 'tab'}-->
<li data-bind="click: tab.selected, css: { 'active': tab.selected}">
<a data-bind="attr: {href: '#' + tab.name}, text: name"></a>
<div data-bind="text: tab.name"></div>
<div data-bind="text: tab.selected"></div>
</li>
<!--/ko-->
</ul>
<!--ko foreach: {data: $parent.tabArray, as: 'tab'}-->
<div class="ui-tabpanel" role="tabpanel" data-bind="visible: tab.selected">
<p data-bind="text: name"></p>
</div>
<!--/ko-->
</div>
淘汰赛观测是可以用于功能获取/设置支持值。尝试'tab.selected()'而不是'tab.selected'。我使用[Knockout-ES5 shim](http://blog.stevensanderson.com/2013/05/20/knockout-es5-a-plugin-to-simplify-your-syntax/)来解决这个问题。 – CrimsonChris
如果你想阅读一个observable,你应该像使用方法/函数一样使用'()'约定。 –