Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.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 编辑、删除并下拉显示正确的字段淘汰js_Javascript_Knockout.js - Fatal编程技术网

Javascript 编辑、删除并下拉显示正确的字段淘汰js

Javascript 编辑、删除并下拉显示正确的字段淘汰js,javascript,knockout.js,Javascript,Knockout.js,所以我有一个敲除js模板,它显示如下字段 ,可以编辑、删除和添加新行。 所以,当我在instantor中单击edit时,它会显示“选择公司”,而不是给我作为instantor进行编辑的第一个选项。 最后,当我尝试添加一个新项目时,它没有显示choose company,它只是首先提供instantor选项,而不是像这样显示的“choose company”。 所以我想修正的是,在编辑时,它应该显示instantor而不是choose company,当我添加新项时,它应该显示choose co

所以我有一个敲除js模板,它显示如下字段 ,可以编辑、删除和添加新行。 所以,当我在instantor中单击edit时,它会显示“选择公司”,而不是给我作为instantor进行编辑的第一个选项。 最后,当我尝试添加一个新项目时,它没有显示choose company,它只是首先提供instantor选项,而不是像这样显示的“choose company”。

所以我想修正的是,在编辑时,它应该显示instantor而不是choose company,当我添加新项时,它应该显示choose company而不是复制顶部字段

下面是模板的代码

 <script id="RRitemTmpl" type="text/html">
    <tr>           
        <td class="" data-bind="text: Company"></td>
        <td class="text-center" data-bind="text: third_party_rr_value"></td>
        <td class="text-center" style="vertical-align:middle;">
            <div data-bind="if: status() > 0">
                <button type="button" class="btn btn-default btn-xs" data-bind="click: $parent.editItem">Edit</button>
                <button type="button" class="btn btn-default btn-xs" data-bind="click: $parent.deleteItem">Delete</button>
            </div>
            <div data-bind="if: status() < 1">
                <span data-bind="text: status_description"></span>
            </div>
        </td>
    </tr>
</script>

<script id="RReditTmpl" type="text/html">
    <tr>
      <td class="text-center">
            <select id="selected_currency_local" class="form-control input-sm" data-bind="options: $root.availableCompanies,
                    optionsText: 'text_value',
                    value: $parent.selectedCompanyLocal,
                    optionsCaption: 'Choose Company'">
            </select>
        </td> 
        <td class="text-center">
            <input type="text" class="form-control input-sm text-left" data-bind="value: third_party_rr_value" />
        </td>

        <td class="text-center" style="vertical-align:middle;">
            <button type="button" class="btn btn-default btn-xs" data-bind="click: $parent.acceptItemEdit">Accept</button>
            <button type="button" class="btn btn-default btn-xs" data-bind="click: $parent.cancelItemEdit">Cancel</button>
        </td>

    </tr>
</script>
在代码中将
“公司”:self.selectedCompanyLocal().text\u值更改为
“公司”:self.selectedCompanyLocal()

它应该可以工作。

我假设数据绑定是错误的。如果您将:value:$parent.selectedCompanyLocal更改为value:$data.selectedCompanyLocal会发生什么情况?@Kris当我将其更改为您所说的内容时,现在添加的新项目显示为Company!:D感谢有一个问题得到了解决,现在唯一的问题是当你单击“编辑”时,它会显示“选择公司”而不是“instantor”。你能确认你添加的选定项目与编辑时的项目相同吗?@Kris好的,当我将其更改为“数据”时,它不会保存其他选项,它只保存instantor,所以我猜它是错的。@Kris yea当它的$parent,然后我添加的是我将要编辑的,但当我添加instantor时,我可以编辑它到其他任何内容,还有一些选项,但它不显示Choose company..是的,谢谢!这就是方法,我后来想出来了。
var ThirdPartyRRViewModel = function(parent, items) {

        var root = parent;
        var self = this;

        this.items = ko.observableArray(items);

        this.selectedItem = ko.observable();

        /*Observable for storing the data of the company selected */
        self.selectedCompanyLocal = ko.observable();

        this.addItem = function() {


             $.each(root.availableCompanies(), function (index, companyItem) {
                if (companyItem.ID == root.userRiskRate().Company) {
                    self.selectedCompanyLocal(companyItem);
                }
            });

            var newThird = {"ID":0, "ORIG_ID":0, "Company":self.selectedCompanyLocal().text_value, 
                            "third_party_rr_value":0, 
                            "status":1, "status_description":"Active"};

            var newItem = new ThirdPartyItem(newThird);
            self.items.push(newItem);
            self.selectedItem(newItem);
        };

        this.deleteItem = function(itemToDelete) {
            /* If ORIG_ID is greater than > 0, useropenloan row has been read from the database 
               and can not be removed, but cancelled. */
            if (itemToDelete.ORIG_ID() > 0) {
                itemToDelete.status(-1); /* Indicates to server that this item should be updated to cancelled. */ 
                itemToDelete.status_description('Will be cancelled');
                itemToDelete.itemIsEdited(1);
            } else {
                 self.items.remove(itemToDelete);
            }
            self.selectedItem(null);
        };

        this.editItem = function(ThirdPartyItem) {
            $.each(root.availableCompanies(), function (index, companyItem) {
                if (companyItem.ID == ThirdPartyItem.Company()) {
                    self.selectedCompanyLocal(companyItem);
                }
            });
            self.selectedItem(ThirdPartyItem);
        };

        this.acceptItemEdit = function() {
            self.selectedItem().third_party_rr_type(self.selectedCompanyLocal().text_code);  
            self.selectedItem().Company(self.selectedCompanyLocal().text_value);  
            self.selectedItem().third_party_rr_type.commit();
            self.selectedItem().Company.commit();
            self.selectedItem().third_party_rr_value.commit();
            self.selectedItem().itemIsEdited(1);
            self.selectedItem(null);
            self.selectedCompanyLocal(null);
        };

        this.cancelItemEdit = function() {
            self.selectedItem().Company.reset();
            self.selectedItem().third_party_rr_value.reset();
            self.selectedItem(null);
            self.selectedCompanyLocal(null);
        };

        this.templateToUse = function(item) {
            return self.selectedItem() === item ? "RReditTmpl" : "RRitemTmpl";
        };
    };