我是Knockout和JavaScript世界的新手,所以这个问题可能有点松散......
我无法将我的绑定数据从我的视图发送到控制JavaScript函数。 HTML:
<tbody data-bind="foreach: deals">
<tr>
<td><span data-bind="text: Name"></span></td>
<td><span data-bind="text: TotalDeals"></span></td>
<td><span data-bind="text: TotalOpenDeals"></span></td>
<td><span data-bind="text: TotalYellowDeals"></span></td>
<td><span data-bind="text: TotalRedDeals"></span></td>
<td><span data-bind="text: TotalClosedTermDeals"></span></td>
<td> </td>
<td><span data-bind="text: BusinessToInstLegal"></span></td>
<td><span data-bind="text: LawyerTAT"></span></td>
<td> <a href="#" data-bind='click: $parent.CountryRep'>View Country Report</a></td>
</tr>
</tbody>
数据绑定后,我希望用户能够点击&#34;查看国家/地区代码&#34;以及要在相应的js文件中发送到此方法的数据:
self.CountryRep = function (obj) {
// Fetching deals data
//var locate = "/data/getCountryDeals"
//datacontext.GetJson(locate, obj.Name,
data[0].Name = obj.Name;
data[0].TotalDeals = obj.TotalDeals;
data[0].TotalOpenDeals = obj.TotalOpenDeals;
data[0].TotalClosedTermDeals = obj.TotalClosedTermDeals;
data[0].TotalYellowDeals = obj.TotalYellowDeals;
data[0].TotalRedDeals = obj.TotalRedDeals;
data[0].BusinessToInstLegal = obj.BusinessToInstLegal;
data[0].LawyerTAT = obj.LawyerTAT;
PlotCountry(data);
}
但是我收到此运行时错误: JavaScript运行时错误:对象不支持属性或方法&#39; CountryRep&#39;
我尝试了一些不同的事情,比如宣布没有&var;&#39; var&#39;并且作为正常功能,在html (<a href="javascript:void(0)" data-bind="click: function(o,e){ $root.CountryRep.call($root, o,e)}">View Country Report</a>
中使用不同的调用)无济于事。
有什么建议吗?
更新:所以我已经改变了Raheen在下面指示的所有内容,现在它没有给出错误,但是看起来它似乎没有进入countryRep,因为我放了那里有一个断点,当我点击它时只加载主页。有关为什么会发生这种情况的任何想法? html位于views文件夹中名为report.regional.html的文件中,countryRep位于viewmodels文件夹中名为report.regional.js的js文件中。
答案 0 :(得分:0)
你应该像这样改变你的功能。它已经足够了,不需要获得单独的数据
var CountryRep = function (obj) {
self.PlotCountry(obj);
}
CountryRep
函数在哪里?我认为它应该是$parent.CountryRep
foreach
像这样称呼
data-bind='click: $parent.CountryRep'
编辑
您的视图模型应该是这样的
function test(){
var self = this
self.deals = ko.observableArray([])
self.CountryRep = function (obj) {
self.PlotCountry(obj);
}
}
EDIT
它在主页上,因为您没有任何href
属性集
<a href="countryrep.html" data-bind='click: $parent.CountryRep'>View Country Report</a>
和
self.CountryRep = function (obj) {
self.PlotCountry(obj);
return true
}