如果选择了点,我需要隐藏/显示某些div。当我执行以下操作时,我得到一个JS错误,即PlanMetric为null:
我有一个MVC模型:
public int PlanMetric {get; set;}
//this is in a setter method
IEnumerable<SelectListItem> Metrics = new List<SelectListItem>
{
new SelectListItem {Text = "Foo", Value = "1"},
new SelectListItem {Text = "Bar", Value = "2"}
};
在我的页面上:
@Html.LabelFor(x => x.PlanMetric)
@Html.DropDownListFor(x => x.PlanMetric,
Model.Metrics, new {
data_bind = "value: PlanMetric,
options: Metrics,
optionsText: 'Text',
optionsValue: 'Value'" })
在我的_layout页面中,我有:
//Merge JS/MVC View Model
var vmMVC = ko.mapping.fromJSON(
'@Html.Raw(JsonConvert.SerializeObject(
Model, Formatting.None,
Constants.JsonDatabaseSettings))');
var vmJS = new ViewModel();
var vm = ko.mapping.fromJS(vmJS, vmMVC);
ko.applyBindings(vm);
然后在我的JS View Model中我有:
var self = this;
self.isPointsSelected = ko.computed(function() {
return vm.PlanMetric() == 2;
});
为什么没有将所选项目的值绑定到PlanMetric?
答案 0 :(得分:1)
在此代码中将vm
替换为self
:
var self = this;
self.isPointsSelected = ko.computed(function() {
return vm.PlanMetric() == 2; // <-- should be return self.PlanMetric() == 2;
});