Knockout js - 如何在两个 javascript 文件之间传递值

Posted

技术标签:

【中文标题】Knockout js - 如何在两个 javascript 文件之间传递值【英文标题】:Knockout js - How to pass value between two javascript files 【发布时间】:2016-03-16 20:20:53 【问题描述】:

我有两个 javascript 文件,分别称为 FileA.jsFileB.js。 FileA.js 包含以下函数:

Reports.CompanySearch.InitGrid = function (viewModel, emptyInit) 
var columns = [
    
        name: 'CompanyName',
        width: 150,
        hidedlg: true,
        search: false,
        formatter: function namelinkformatter(cellvalue, options, rowObject)               
                return "<a href='#/CompanyDetails/" + rowObject["Id"] + "'>" + rowObject["CompanyName"] + "</a>";               
        
    ,

     name: 'Address', width: 300, search: false ,
     name: 'City', width: 100, search: false ,
     name: 'State', width: 50, search: false ,
     name: 'Zip', width: 80, search: false, hidden: true ,
     name: 'Country', width: 120, search: false, hidden: true 
];
var grid = $("#searchGrid");
grid.jqGrid(
    jsonReader:  root: 'rows', total: 'total', page: 'page', records: 'records', cell: 'cell', id: 'Id', repeatitems: false ,
    colNames: [
        'Company Name',
        'Address',
        'City',
        'State',
        'Zip',
        'Country'],
    colModel: columns,
    postData: Reports.CompanySearch.CreateSearchModel(viewModel),       
    url: '/CompanyReport/Search',
    datatype: emptyInit ? 'local' : 'json',
    mtype: 'POST',
    viewrecords: true,
    loadonce: false,
    shrinkToFit: false,
    multiselect: false,
    autowidth: true,
    altRows: true,
    height: 'auto'      
);;

基本上,该函数在页面(页面 A)上创建一个数据网格,其中包含从 SQL Server 中的表加载的公司列表。 公司名称有一个链接,允许用户单击它并在不同的页面(页面 B)上获取公司详细信息。 页面 A 由 JavaScript FileA.js 控制,页面 B 由 JavaScript FileB.js 控制。 每次用户单击公司名称时,我想将公司 ZipCode 传递给 FileB.js 中的函数。 到目前为止,我在网上遇到的解决方案没有帮助,任何帮助将不胜感激。谢谢!

【问题讨论】:

【参考方案1】:

由于您使用的是 Knockout,请查看 Components。

协调两者的方法是有一个父文件知道它们并在它们之间进行调解。父级将创建数据对象并将它们传递给两个组件对象。

【讨论】:

以上是关于Knockout js - 如何在两个 javascript 文件之间传递值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Knockout.js 中嵌套对象

如何有条件地绑定到 knockout.js 中的“valueUpdate”?

每个视图都有单独的knockout js文件

使用 knockout.js 和 select2 级联下拉菜单

如何使用 knockout.js 订阅变量状态更改

如何使用 Knockout.js 将多个 View 绑定到单个 ViewModel