Javascript 在Knockout.js中绑定函数的结果
我在使用Knockout.js创建视图模型时遇到了一个问题。我想问的一点是如何实现一个函数的绑定,该函数使用一个可观察变量作为参数 我有以下几类实体框架:Javascript 在Knockout.js中绑定函数的结果,javascript,c#,asp.net,knockout.js,Javascript,C#,Asp.net,Knockout.js,我在使用Knockout.js创建视图模型时遇到了一个问题。我想问的一点是如何实现一个函数的绑定,该函数使用一个可观察变量作为参数 我有以下几类实体框架: public class Actor { public int Id { get; set; } public string ActorName { get; set; } public List<ActorCurrentStatus> ActorStatuses { get; set; } } publ
public class Actor
{
public int Id { get; set; }
public string ActorName { get; set; }
public List<ActorCurrentStatus> ActorStatuses { get; set; }
}
public class ActorCurrentStatus
{
public long Id { get; set; }
public double Rating { get; set; }
public MatchType MatchType { get; set; }
public string CurrentStatusIndicator { get; set; }
//Foreign Key Conditions
public long Actor_Id { get; set; }
public virtual Actor Actor{ get; set; }
}
public enum MatchType
{
type_team,
type_ffa
}
public class ActorsListViewModel //View Model (not in database)
{
public int Id { get; set; }
public List<Actor> Actors { get; set; }
}
然后在视图中创建一个js对象:
public ActionResult ActorsList()
{
ActorsListViewModel vm= new ActorsListViewModel();
viewModel.vm= _db.Actors.ToList();
return View(vm);
}
<script type="text/javascript">
var model = @Html.Raw(JsonConvert.SerializeObject(Model, Formatting.Indented,
new JsonSerializerSettings()
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore
}));
</script>
<button data-bind="click: ChangeMode('type_team')">TYPE_TEAM</button>
<button data-bind="click: ChangeMode('type_ffa')">TYPE_FFA</button>
在这里,这是正确的:
<div data-bind="foreach: Actors()">
<div data-bind="text: $parent.getActorStatus(ActorStatuses ,'type_team').Rating"></div>
</div>
更改绑定后,视图在加载时开始显示参与者对类型_ffa的评级,单击按钮时不会更新信息
有人能指出代码和结构中存在哪些错误吗?可观察对象要求您通过将其作为参数传递来赋值。因此,它需要您执行以下操作:
function ChangeMode(str) {
switch (str) {
case 'type_team':
viewModel.mode('type_team');
break;
case 'type_ffa':
viewModel.mode('type_ffa');
break;
default:
break;
}
}
另外,从ChangeMode
函数的构造方式来看,我相信调用ko.applyBindings
时函数不会绑定在一起。这意味着这只是一个普通的javascript函数。因此,您不能使用数据绑定:单击触发此操作,而是使用普通onclick
<button onClick="ChangeMode('type_team')">TYPE_TEAM</button>
<button onClick="ChangeMode('type_ffa')">TYPE_FFA</button>
TYPE_团队
型游离脂肪酸
可观察对象要求您通过将其作为参数传递来分配值。因此,它需要您执行以下操作:
function ChangeMode(str) {
switch (str) {
case 'type_team':
viewModel.mode('type_team');
break;
case 'type_ffa':
viewModel.mode('type_ffa');
break;
default:
break;
}
}
另外,从ChangeMode
函数的构造方式来看,我相信调用ko.applyBindings
时函数不会绑定在一起。这意味着这只是一个普通的javascript函数。因此,您不能使用数据绑定:单击触发此操作,而是使用普通onclick
<button onClick="ChangeMode('type_team')">TYPE_TEAM</button>
<button onClick="ChangeMode('type_ffa')">TYPE_FFA</button>
TYPE_团队
型游离脂肪酸
检查此链接
您需要在映射中绑定ChangeMode函数。检查此链接
您需要在映射中绑定ChangeMode函数。实际上,我没有将函数包含到映射中。它与Ihsan的解决方案配合得很好。谢谢。实际上我没有包括映射的函数。它与Ihsan的解决方案配合得很好。非常感谢。
<button onClick="ChangeMode('type_team')">TYPE_TEAM</button>
<button onClick="ChangeMode('type_ffa')">TYPE_FFA</button>