Javascript 如何在单击时修改对象
我试图在单击时修改对象。这是我的Javascript 如何在单击时修改对象,javascript,knockout.js,Javascript,Knockout.js,我试图在单击时修改对象。这是我的 <form> <ul class="tabs" data-tabs="tabs" data-bind="template: 'lineTemplate'"></ul> <div class="pill-content" data-bind="template: 'lineDivTemplate'" ></div> </form> <script id="lineT
<form>
<ul class="tabs" data-tabs="tabs" data-bind="template: 'lineTemplate'"></ul>
<div class="pill-content" data-bind="template: 'lineDivTemplate'" ></div>
</form>
<script id="lineTemplate" type="text/html">
{{each(i, line) lines()}}
<li><a data-bind="click: function() { viewModel.setActive(line) }, attr : { href : '#line' + id() }"><span style="font-size: 15px;" data-bind="text : model"/></a></li>
{{/each}}
</script>
var viewModel = {
lines: ko.observableArray([]),
setActive : function(line) {
**//I need to modify this object**
line.activeTab = true;
}
};
$.getJSON("/json/all/lines", { customer_id : customer_id } , function(data) {
ko.mapping.fromJS(data, null, viewModel.lines);
});
ko.applyBindings(viewModel);
{{每个(i,行)行()}
{{/每个}}
var viewModel={
行:ko.observearray([]),
setActive:函数(行){
**//我需要修改这个对象**
line.activeTab=true;
}
};
$.getJSON(“/json/all/lines”,{customer\u id:customer\u id},函数(数据){
fromJS(数据,null,viewModel.lines);
});
应用绑定(视图模型);
基本上,当用户单击该选项卡时,我需要它来更新模型(最终更新数据库),使其成为当前活动的选项卡。我使用的第一种方法是删除对象修改它,然后将其推回数组,但推回会将其添加到数组的末尾,这是我不想要的。感谢您的帮助。通常,您会看到一些类似“selectedTab”或“activeTab”的内容
var viewModel = {
lines: ko.observableArray([]),
activeTab: ko.observable(),
};
viewModel.setActive = function(line) {
this.activeTab(line);
}.bind(viewModel);
然后,您可以对activeTab
执行任何需要的绑定。在KO 1.3中,您可以执行以下操作:
<div data-bind="with: activeTab">
...add some bindings here
</div>
<script id="activeTmpl">
...add your bindings here
</script>
…在此处添加一些绑定
在此之前,您可以:
<div data-bind="with: activeTab">
...add some bindings here
</div>
<script id="activeTmpl">
...add your bindings here
</script>
…在此处添加绑定
这很有效,但我正在寻找更简单的方法。我只想在observableArray中修改一个属性。如果对象中已经有属性,那么在将信息写入数据库时,这会更容易。按照您的方式,我必须序列化一个完全不同的对象,获取id,然后将其作为单独的帖子传递并更新它。谢谢。本例中的activeTab
只是对ObservalArray中相同行
对象的引用。因此,这不会是一个完全不同的对象。