Knockout.js 击倒动态主机详细信息

Knockout.js 击倒动态主机详细信息,knockout.js,knockout-mapping-plugin,master-detail,Knockout.js,Knockout Mapping Plugin,Master Detail,通过KnockoutJS动态创建、读取、更新、删除 与同行专家继续提问的一部分() var columnDefs=[{ “$id”:“1”, “ColumnName”:“Id”, “系统类型id”:56, “primaryCol”:1 }, { “$id”:“2”, “ColumnName”:“库存Id”, “系统类型id”:231, “primaryCol”:0 }, { “$id”:“3”, “ColumnName”:“ACX_编号”, “系统类型id”:175, “primaryCol”

通过KnockoutJS动态创建、读取、更新、删除

与同行专家继续提问的一部分()


var columnDefs=[{
“$id”:“1”,
“ColumnName”:“Id”,
“系统类型id”:56,
“primaryCol”:1
}, {
“$id”:“2”,
“ColumnName”:“库存Id”,
“系统类型id”:231,
“primaryCol”:0
}, {
“$id”:“3”,
“ColumnName”:“ACX_编号”,
“系统类型id”:175,
“primaryCol”:0
}, {
“$id”:“4”,
“ColumnName”:“ACX_名称”,
“系统类型id”:175,
“primaryCol”:0
}, {
“$id”:“5”,
“ColumnName”:“序号”,
“系统类型id”:175,
“primaryCol”:0
}, {
“$id”:“27”,
“ColumnName”:“Acc_类”,
“系统类型id”:231,
“primaryCol”:0
}, {
“$id”:“28”,
“ColumnName”:“方向”,
“系统类型id”:231,
“primaryCol”:0
}];
var rowDefs=[{
“$id”:“1”,
“Id”:1,
“库存标识”:“PV0001-1”,
“ACX_编号”:“6”,
“ACX_名称”:“ABC”,
“序号”:“5”,
“Acc_类”:“本地”,
“方向”:“双向”
}, {
“$id”:“2”,
“Id”:2,
“库存Id”:“PV0002-1”,
“ACX_编号”:“3”,
“ACX_名称”:“CKD”,
“序号”:“6”,
“Acc_类”:“本地”,
“方向”:“双向”
}];
函数头服务模型(数据,父级){
var self=这个,
nbsp=String.fromCharCode(160);
//可观测
fromJS(数据,{},self);
//self.isVisible=ko.observable(真);
//计算
self.isVisible=ko.computed(函数(){
//console.log('data.ColumnName.indexOf(\'SYS\'):',data.ColumnName.indexOf('SYS');
返回data.ColumnName.indexOf('SYS')>=0?false:true;
});
self.HeaderName=ko.computed(函数(){
返回数据。ColumnName.replace(“”),nbsp);
});
self.SystemField=ko.computed(函数(){
返回data.ColumnName.indexOf('SYS');
});
self.Visible=ko.computed(函数(){
//console.log('data.ColumnName.indexOf(\'SYS\'):',data.ColumnName.indexOf('SYS');
返回data.ColumnName.indexOf('SYS')>=0?false:true;
});
}
// ---------------------------------------------------------------------------
函数RowViewModel(数据,父级){
var self=这个,
nbsp=String.fromCharCode(160);
//可观测
fromJS(数据,{},self);
//计算
self.HrefDetailsPage=ko.computed(函数(){
返回parent.invtype+'/'+data.Id;
});
self.selectedItem=ko.observable();
self.setSelectedItem=函数(){
console.dir(this);
self.selectedItem(这个);
};
self.getDetails=函数(详细信息){
self.selectedItem(详细信息);
//console.dir(self.selectedItem);
返回详细信息;//self.selectedItem();
}
}
// ---------------------------------------------------------------------------
函数ViewModel(){
var self=这个;
//原始值
self.invtype=“@ViewBag.invtype”/“路面”;
//可观测
self.columns=ko.observearray();
self.rows=ko.observearray();
//计算
self.visibleColumns=ko.computed(函数(){
返回ko.utils.arrayFilter(self.columns(),函数(column){
返回column.isVisible;
});
});
//方法
self.load=函数(){
美元。什么时候(
//在此处对API资源使用两个普通的$.get()调用
//只有JSFIDLE中的模型才需要$.post()
$.post(“/echo/json/”{
json:json.stringify(columnDefs)
}),
$.post(“/echo/json/”{
json:json.stringify(rowDefs)
}))
.then(函数(columnResponse、rowResponse){
var columnDefs=columnResponse[0],
rowDefs=rowResponse[0],
列映射={
键:功能(数据){
返回ko.utils.unwrapObservable(data.ColumnName);
},
创建:函数(选项){
返回新的HeadServiceWModel(options.data,self);
}
},
行映射={
键:功能(数据){
返回ko.utils.unwrapobbservable(data.Id);
},
创建:函数(选项){
返回新的RowViewModel(options.data,self);
}
};
fromJS(columnDefs、columnMapping、self.columns);
fromJS(rowDefs,rowMapping,self.rows);
});
回归自我;
};
}
// ---------------------------------------------------------------------------
ko.applyBindings(newviewmodel().load());
//HTML-UI

   <div class="details" data-bind="visible:rows.selectedItem">
     <div data-bind="with: rows.selectedItem">
            details data.......
            <pre data-bind="text: JSON.stringify(ko.toJSON($data))"></pre>
            <input data-bind="value:Id" />

            <!-- TODO dynamicly output label and data from the viewmodel -->

            <b>ID:</b> <span data-bind="text: Id"></span>
            <b>ACX Name:</b> <span data-bind="text:ACX_Name"></span>
            <b>Inv ID:</b> <span data-bind="text:ACX_Name"></span>

      </div>
    </div>
    <div data-bind="visible: rows.selectedItem == null">
        No selection was made
    </div>
    <div id="listPlaceholder"> 
        <table>
        <thead>
            <tr>
                <th>Link</th>
                <!-- ko foreach: $root.visibleColumns -->
                <th data-bind="text: HeaderName, visible: Visible"></th>
                <!-- /ko -->
            </tr>
        </thead>
        <tbody data-bind="foreach: $root.rows">
            <tr data-bind="click: $data.setSelectedItem">
                <td><a href="" data-bind="attr: {href: HrefDetailsPage}">Details</a></td>
                <!-- ko foreach: $root.visibleColumns --> 
                <td data-bind="text: $parent[ColumnName()], visible: Visible"></td>
                <!-- /ko -->
            </tr>
        </tbody>
        </table>

    </div>

详细数据。。。。。。。
身份证件:
ACX名称:
库存标识:
没有作出选择
链接
   <div class="details" data-bind="visible:rows.selectedItem">
     <div data-bind="with: rows.selectedItem">
            details data.......
            <pre data-bind="text: JSON.stringify(ko.toJSON($data))"></pre>
            <input data-bind="value:Id" />

            <!-- TODO dynamicly output label and data from the viewmodel -->

            <b>ID:</b> <span data-bind="text: Id"></span>
            <b>ACX Name:</b> <span data-bind="text:ACX_Name"></span>
            <b>Inv ID:</b> <span data-bind="text:ACX_Name"></span>

      </div>
    </div>
    <div data-bind="visible: rows.selectedItem == null">
        No selection was made
    </div>
    <div id="listPlaceholder"> 
        <table>
        <thead>
            <tr>
                <th>Link</th>
                <!-- ko foreach: $root.visibleColumns -->
                <th data-bind="text: HeaderName, visible: Visible"></th>
                <!-- /ko -->
            </tr>
        </thead>
        <tbody data-bind="foreach: $root.rows">
            <tr data-bind="click: $data.setSelectedItem">
                <td><a href="" data-bind="attr: {href: HrefDetailsPage}">Details</a></td>
                <!-- ko foreach: $root.visibleColumns --> 
                <td data-bind="text: $parent[ColumnName()], visible: Visible"></td>
                <!-- /ko -->
            </tr>
        </tbody>
        </table>

    </div>
function ViewModel() {
     var self = this;
     self.selectedItem = ko.observable(null);
}
<div data-bind="with: selectedItem">test <pre data-bind="text: JSON.stringify(ko.toJSON($data))"></pre>
    <input data-bind="value:Id" /> <b>ID:</b>  <span data-bind="text: Id"></span>
</div>