如何通过单击修改对象

发布于 2024-12-14 04:48:38 字数 1071 浏览 0 评论 0原文

我正在尝试通过单击修改对象。这就是我所拥有的。

<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'm trying to modify an object on a click. Here's what I have.

<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);

Basically when the user clicks the tab I need it to update the model(and eventually the database) that it is the currently active tab. The first way I had was the delete the object modify it and then push it back to the array, but pushing adds it to the end of the array, which I don't want. Thanks for any help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

愁以何悠 2024-12-21 04:48:38

通常,您会维护诸如“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>

Typically, you would mantain something like a "selectedTab" or "activeTab" observable.

var viewModel = {
  lines: ko.observableArray([]),
  activeTab: ko.observable(),
};

viewModel.setActive = function(line) {
    this.activeTab(line);
}.bind(viewModel);

Then, you can do any binding that you want against activeTab. In KO 1.3, you could do:

<div data-bind="with: activeTab">
  ...add some bindings here
</div>

Prior to that you could do:

<script id="activeTmpl">
   ...add your bindings here
</script>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文