我有多个输入框,我想根据用户的选择隐藏/取消隐藏.
我可以通过为每个输入分别使用dependentObservable来实现这一点,然后使dependentObservable观察父选择.
viewModel.showField1= ko.dependentObservable(function () {
return viewModel.selectedType() ? IsFeatureVisible(viewModel, "BusinessFieldName1") : false;
}, viewModel
);
viewModel.showField1= ko.dependentObservable(function () {
return viewModel.selectedType() ? IsFeatureVisible(viewModel, "BusinessFieldName2") : false;
}, viewModel
);
Run Code Online (Sandbox Code Playgroud)
对于每个领域来说,这都是一种乏味的做法.我可以使用可以获取参数的dependentObservable函数绑定元素吗?重要的是它应该在父级更改时触发
其他选项是当父更改时,我遍历元素并隐藏/取消隐藏,但这将要求我映射元素id < - >字段的业务名称.
当前
<tr data-bind="visible: showField1">
<tr data-bind="visible: showField2">
Run Code Online (Sandbox Code Playgroud)
期望
<tr data-bind="visible: showField('BusinessFieldName1')">
<tr data-bind="visible: showField('BusinessFieldName2')">
Run Code Online (Sandbox Code Playgroud) 我正在将一个对象列表绑定到一个select使用的淘汰赛.对象类可以包含任意数量的属性
<select id="TheProperty_City"
name="TheProperty_City"
class="required"
data-bind="options: cityList,
optionsText: 'Name',
value: selectedCity,
optionsCaption: '--select the city--'" />
Run Code Online (Sandbox Code Playgroud)
这非常好用,我可以使用viewModel.selectedCity().Name或viewModel.selectedCity().Value加载子元素.
我的问题是jQuery验证.如果我保留上述语句,jQuery即使在选择后也不会重置错误.
我通过optionsValue在bind中指定它来修复它,但然后selectedCity返回标量值而不是整个对象.任何想法如何保持对象行为或以不同方式进行验证?
<select id="TheProperty_City"
name="TheProperty_City"
class="required"
data-bind="options: cityList,
optionsText: 'Name',
optionsValue: 'Value', //added the optionsValue
value: selectedCity,
optionsCaption: '--select the city--'" />
Run Code Online (Sandbox Code Playgroud)
optionsValue未指定时,错误仍然存在:

这是我的对象观察selectedCity:

这是指定selectedCity何时的对象监视optionsValue:

我跟着http://blog.stevensanderson.com/2010/07/12/editing-a-variable-length-list-knockout-style/文章使用ko.utils.postJson从提交数据并导航到不同的视图控制器
我曾经ko.utils.postJson(location.href, {model: ko.toJson(viewModel)});提交数据,但提交给服务器的模型有空属性.
ko.utils.postJson(location.href, {model: viewModel}); 也失败了.
客户端viewModel具有除服务器模型之外的其他属性,但我相信如果它与$ ajax post方法一起使用,它应该与KO post一起使用
如果我将模型传递给它,它就有效
ko.utils.postJson(location.href,
{model: {P1:this.p1(), P2:this.p2(), P3: this.p3()}});
Run Code Online (Sandbox Code Playgroud)
我必须在提交前映射每个属性吗?当使用()用于viewModel属性时,它也非常令人困惑
服务器代码
[HttpPost]
public ActionResult SearchProperty([FromJson]MyModel model)
{
try
{
return View("XYZ", model);
}
catch (Exception e)
{
}
}
Run Code Online (Sandbox Code Playgroud)