【发布时间】:2016-11-06 03:25:21
【问题描述】:
我有多个选项卡(A、B、C)并且在加载“C”选项卡时,模型属性应该数据绑定到选项卡“c”。 我遇到了数据绑定问题。
三个选项卡(A、B、C)在另一个视图视图 A 中。
这是我的观点
<div id="tabMain" style="width:1230px;height:auto;overflow:auto;">
<ul>
<li><a href="#A">A</a></li>
<li><a href="#B">B</a></li>
<li data-bind="click:loProvision"><a href="#C">C</a>
Here is my Tab 'c'
<div id="SubC">
<ul>
<li><a href="#tabC1">tabc1</a></li>
</ul>
<div id="tabC1" style="overflow:auto;">
<div>
@Html.HiddenFor(m => m.UID)
<div style="width:500px;height:20px;margin-left:30px">
<div >@Html.NCheckBoxFor(m => m.EnablePD, new { id = "cbPD", style = "vertical-align:middle;", data_bind = "checked:enablePD" }, Model.IsReadOnly)</div>
<div >
<label for="cbOrgDetailsPD">@Res.OrganizationStrings.Ect</label>
</div>
</div>
<div style="width:100%;margin-top:10px;margin-left:30px">
<div style="width:22%;">
<label for="ddPD">Strings.PlaceUsersInGroup</label>
</div>
<div style="width:45%">@Html.NDropDownListFor(m => m.PD, Model.groups, new { id = "ddPD", style = "width:270px;height:25px;vertical-align:middle;", , data_bind = "enable: enablePD"
}, Model.IsReadOnly)</div>
</div>
<div style="margin-top:20px;margin-left:30px">
<div >@Html.NCheckBoxFor(m => m.ProType, new { id = "cbType", style = "vertical-align:middle;", data_bind = "checked:enableing" }, Model.IsReadOnly)</div>
<div >
<label for="cbByType">@Res.Strings.Enableing</label>
</div>
</div>
</div>
</div>
包含选项卡的视图具有视图模型,我想在加载选项卡“c”时绑定选项卡“c”组件。
这是我的 Javascript 代码:
function Intialize {
var model = new MainviewModel();
ko.applyBindings(model, document.getElementById(orgDetailsTab.getId()));
}
function MainviewModel() {
this.loadvision = function() {
if (isvisionsLoaded === false) {
var autoUrl = '/Org/OrgView?UID=' + UID + '&isReadOnly=' + isReadOnly;
loadvision();
}
};
}
var CAPDModel;
function loadvision() {
try {
$('#C').empty();
$.ajaxSetup({
cache: false
});
$('#C').load(visionUrl, function(responseText, textStatus, XMLHttpRequest) {
$("#SubC").tabs().addClass("ui-tabs-vertical ui-helper-clearfix");
isLoaded = true;
CModel = new organizationViewModel();
ko.applyBindings(CModel, document.getElementById(tabC1));
function orgViewModel() {
this.enablePD = ko.observable($('#cbOrgPD').is(':checked'));
this.enableCing = ko.observable($('#cbType').is(':checked'));
this.enableLicense = ko.observable($('#cbOrgDetailsLicenses').is(':checked'));
this.cansee = ko.observable(false);
this.canRemove = ko.observable(false);
}
}
我在
遇到异常ko.applyBindings(CModel, document.getElementById(tabC1));
我的要求是加载 Tab 'tabC1' 的 html 属性应该是数据绑定的(禁用和启用 html 字段)应该发生。
我最初将 CAPD 相关属性放在“MainviewModel”中,但没有发生绑定。
所以我将 C 属性从“MainviewModel”移动到“tabC1”加载功能,但数据绑定仍然没有发生。
所以我在 'tabC1' div 加载函数中创建了一个新的视图模型,并尝试在 div 'tabC1' 的负载上应用绑定。
如果方法错误,有人可以指导或让我知道如何实现它。
这是我面临的错误详细信息
ko.applyBindings(CModel, document.getElementById(tabC1));
Unhandled exception at line 26076, column 17 in eval code
0x800a139e - JavaScript runtime error: Unable to parse bindings.
Message: ReferenceError: 'loadvision' is undefined;
Bindings value: click:loadvision
【问题讨论】:
-
你正在绑定到
organizationDetailsCAPDViewModel,它(据我所知)不包含名为loadAutoProvision的方法。你的 HTML 有一个click: loadAutoProvision,所以它会抛出一个错误。你的意思是扩展MainViewModel? -
我的要求是当加载主视图'A'中的'C' div时,我想将与CAPD相关的项目绑定到另一个视图'Tabc'中的'tabc1'跨度>
-
虽然我不清楚你想要做什么究竟,但我可以告诉你,你正在以一种不受欢迎的方式混合 jQuery 和淘汰赛......查看淘汰赛
template和with绑定。它们允许您将 HTML 注入到数据绑定到子视图模型的 DOM 中。 -
对不起,如果您不明白。我的要求是我正在加载一个具有多个选项卡的主视图。在一个选项卡的加载时,我正在加载另一个具有一些淘汰赛绑定的视图。如何我可以在主视图js文件中绑定第二个视图事件吗
标签: javascript jquery knockout.js knockout-mvc