Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在单击时修改对象_Javascript_Knockout.js - Fatal编程技术网

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中相同
    对象的引用。因此,这不会是一个完全不同的对象。