Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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,我是knockout.js的新手 我想在更改EmployeeCode的组合框时更改工资的值,但我在工资文本框中的值没有更改为12 这是我的密码 我的JS: var jsDetail = function (data) { this.Code = ko.observable(data.Code || ''); this.SalaryCode = ko.observable(data.SalaryCode || ''); this.EmployeeCo

我是knockout.js的新手

我想在更改EmployeeCode的组合框时更改工资的值,但我在工资文本框中的值没有更改为12

这是我的密码

我的JS:

var jsDetail = function (data) {
        this.Code = ko.observable(data.Code || '');
        this.SalaryCode = ko.observable(data.SalaryCode || '');
        this.EmployeeCode = ko.observable(data.EmployeeCode || '');
        this.WorkDay = ko.observable(data.WorkDay || 0);
        this.OvertimeWorkDay = ko.observable(data.OvertimeWorkDay || 0);
        this.Salary = ko.observable(data.Salary || 0);
        this.MealAllowance = ko.observable(data.MealAllowance || 0);
        this.OvertimePay = ko.observable(data.OvertimePay || 0);
        this.TotalMealAllowance = ko.observable(data.TotalMealAllowance || 0);
        this.TotalOvertimePay = ko.observable(data.TotalOvertimePay || 0);
        this.TotalPay = ko.observable(data.TotalPay || 0);
        this.Deleted = ko.observable((data.IsDeleted || 'false').toString());
    };

    var jsSalaryViewModel = function (json) {
        ko.mapping.fromJS(json, {
            SalaryDetails: {
                create: function (option) {
                    return new jsDetail(option.data);
                }
            }
        }, this);

        this.addNewDetail = function () {
            this.SalaryDetails.push(new jsDetail({}));
            $("#properties tbody").trigger('sortupdate');
        }.bind(this);

        this.removeDetail = function (detail) {
            this.SalaryDetails.remove(detail);
        }.bind(this);


        this.employeeChange = function (detail) {
            console.log(detail.Salary);
            datail.Salary = 12;
        }.bind(this);
    };

    var viewmodel = new jsSalaryViewModel(@Html.Raw(json));
    ko.applyBindings(viewmodel);
我的组合框和文本框:

        <select data-bind="event: { change : $root.employeeChange }, value:EmployeeCode, attr : {name: 'SalaryDetails[' + $index() + '].EmployeeCode'}" class="form-control">
            <option value=""> </option> 
            <option value="1"> One </option> 
        </select>
        <input type="number" data-bind="value:Salary, attr : {name: 'SalaryDetails[' + $index() + '].Salary'}" class="form-control" /> 

一个

请帮帮我。

您的代码有很多地方出错,如果不将此答案转化为淘汰教程,很难将它们全部列出

已经有了一个,我相信你应该接受它

也顺便去一下神奇的。您当前的尝试表明您对库应该如何工作缺乏基本了解,这是您在编写更多代码之前绝对需要解决的问题

最显著的错误是您试图使用jQuery解决部分问题。不要那样做。不要使用jQuery。在淘汰应用程序中通常不需要它,而且它绝对不应该出现在viewmodels中。没有jQuery DOM更新,没有来自viewmodel内部的jQuery事件处理。HTML视图中也没有jQuery

下面是我认为您想要做的工作的一个片段,将其减少到最小。在JS vievmodel和HTML视图中都有很多更改。请与您的代码进行彻底比较

函数工资明细(数据){
数据=数据|{};
this.EmployeeCode=ko.observable(data.EmployeeCode | | |“”);
这个.Salary=ko.observable(data.Salary | | 0);
};
函数SalaryEditor(数据){
var self=这个;
self.currentDetail=ko.observable();
ko.mapping.fromJS(数据{
薪金详情:{
创建:函数(选项){
返回新的SalaryDetail(option.data);
}
}
},自我);
self.addNewDetail=函数(){
self.SalaryDetails.push(newSalaryDetail());
};
self.removeDetail=函数(细节){
self.SalaryDetails.remove(细节);
};
self.employeeChange=功能(细节){
self.currentDetail()工资(12);
};
};
var viewmodel=新的SalaryEditor({
薪金详情:[
{员工代码:“12345”,工资:40},
{员工代码:23456,工资:50},
{员工代码:34567,工资:60},
{员工代码:45678,工资:70}
]
});
应用绑定(视图模型)

重置工资
删除细节
添加细节

视图模型状态:
函数工资明细(数据){
数据=数据|{};
this.EmployeeCode=ko.observable(data.EmployeeCode | | |“”);
这个.Salary=ko.observable(data.Salary | | 0);
};
函数SalaryEditor(数据){
var self=这个;
self.currentDetail=ko.observable();
ko.mapping.fromJS(数据{
薪金详情:{
创建:函数(选项){
返回新的SalaryDetail(option.data);
}
}
},自我);
self.addNewDetail=函数(){
self.SalaryDetails.push(newSalaryDetail());
};
self.removeDetail=函数(细节){
self.SalaryDetails.remove(细节);
};
self.employeeChange=功能(细节){
self.currentDetail()工资(12);
};
};
var viewmodel=新的SalaryEditor({
薪金详情:[
{员工代码:“12345”,工资:40},
{员工代码:23456,工资:50},
{员工代码:34567,工资:60},
{员工代码:45678,工资:70}
]
});
应用绑定(视图模型)

重置工资
删除细节
添加细节

视图模型状态:
注意浏览器控制台中的JS错误。您的代码中有一个输入错误
datail
而不是
detail