Knockout.js 将参数绑定到数据目标返回对象而不是文本(手风琴)
Knockout.js Binding param to Data-Target returning object instead of text (Accordion)
Knockout.Js 的新手,三天后我开始了解数据绑定...
我创建了一个动态手风琴,当我使用 attr 进行数据绑定时:{'data-target': '#' + RecipeName' 我返回 Data-target=#[object object] 我明白了我可以找回名字
如果我使用 data-bind="text: RecipeName" 参数的(但我需要将#附加到它
允许我的手风琴在正确的 Id 上打开..)
我在网上看过,似乎找不到足够的答案。我试过了 google
开发工具将 #[object object] 更改为我期望的值并且它工作正常。
有人可以解释为什么会发生这种情况以及需要解决什么问题。我想这很简单?
<section id="results" style="margin-top: 1em;">
<div class="accordion-group">
<div class="accordion-heading">
<table class="table table-striped table-hover accordion">
<thead>
<tr>
<th>Set Next</th>
<th>Name</th>
<th>Bench</th>
<th>Transacted</th>
<th>Receipe Name</th>
</tr>
</thead>
<tbody data-bind="foreach: Stages">
*****<tr class="accordion-toggle" data-toggle="collapse" data-target="#" data-bind="attr: {'data-target': '#' + RecipeName}">*****
<td data-bind="css: CellClass">
<button class="btn btn-warning" data-bind="attr: {'data-id': Id}" data-toggle="modal" data-target="#moveReason">@Html.LocalisedStringFor(model => model.MoveToStageText)</button>
<a class="text" data-bind="attr: {'data-id': Id}" data-toggle="modal" data-target="#moveReason"><span>@Html.LocalisedStringFor(model => model.CurrentPositionText)</span></a>
</td>
<td><span data-bind="text: ProcessName"></span></td>
<td><span data-bind="text: BenchName"></span></td>
<td><span data-bind="text: TransactionStatus"></span></td>
<td><span data-bind="text: RecipeName"></span></td>
</tr>
<tr id="" class="accordion-body collapse" data-bind="attr: {'id':RecipeName}">
<td colspan="5">
<div class="accordion-inner" data-bind="foreach: $parent.Stages">
<ul>
<li> <span data-bind="text: StepName"></span></li>
<button class="btn btn-warning" data-bind="attr: {'data-id': Id}" data-toggle="modal" data-target="#moveReason">@Html.LocalisedStringFor(model => model.MoveToStageText)</button>
</ul>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
这是结果嘛returns
我怀疑 <tr class="accordion-toggle" data-toggle="collapse" data-target="#" data-bind="attr: {'data-target': '#' + RecipeName}">
需要
<tr class="accordion-toggle" data-toggle="collapse" data-target="#" data-bind="attr: {'data-target': '#' + RecipeName()}">
另一种选择是在您的视图模型上放置一个 属性 来执行您需要的逻辑,例如
function ViewModel(){
var self = this;
self.RecipeName = ko.observable();
self.RecipeNameHash = ko.pureComputed(function(){
return '#' + self.RecipeName();
});
}
然后 table 行变为
<tr class="accordion-toggle" data-toggle="collapse" data-target="#" data-bind="attr: {'data-target': RecipeNameHash}">
Knockout.Js 的新手,三天后我开始了解数据绑定...
我创建了一个动态手风琴,当我使用 attr 进行数据绑定时:{'data-target': '#' + RecipeName' 我返回 Data-target=#[object object] 我明白了我可以找回名字 如果我使用 data-bind="text: RecipeName" 参数的(但我需要将#附加到它 允许我的手风琴在正确的 Id 上打开..)
我在网上看过,似乎找不到足够的答案。我试过了 google 开发工具将 #[object object] 更改为我期望的值并且它工作正常。
有人可以解释为什么会发生这种情况以及需要解决什么问题。我想这很简单?
<section id="results" style="margin-top: 1em;">
<div class="accordion-group">
<div class="accordion-heading">
<table class="table table-striped table-hover accordion">
<thead>
<tr>
<th>Set Next</th>
<th>Name</th>
<th>Bench</th>
<th>Transacted</th>
<th>Receipe Name</th>
</tr>
</thead>
<tbody data-bind="foreach: Stages">
*****<tr class="accordion-toggle" data-toggle="collapse" data-target="#" data-bind="attr: {'data-target': '#' + RecipeName}">*****
<td data-bind="css: CellClass">
<button class="btn btn-warning" data-bind="attr: {'data-id': Id}" data-toggle="modal" data-target="#moveReason">@Html.LocalisedStringFor(model => model.MoveToStageText)</button>
<a class="text" data-bind="attr: {'data-id': Id}" data-toggle="modal" data-target="#moveReason"><span>@Html.LocalisedStringFor(model => model.CurrentPositionText)</span></a>
</td>
<td><span data-bind="text: ProcessName"></span></td>
<td><span data-bind="text: BenchName"></span></td>
<td><span data-bind="text: TransactionStatus"></span></td>
<td><span data-bind="text: RecipeName"></span></td>
</tr>
<tr id="" class="accordion-body collapse" data-bind="attr: {'id':RecipeName}">
<td colspan="5">
<div class="accordion-inner" data-bind="foreach: $parent.Stages">
<ul>
<li> <span data-bind="text: StepName"></span></li>
<button class="btn btn-warning" data-bind="attr: {'data-id': Id}" data-toggle="modal" data-target="#moveReason">@Html.LocalisedStringFor(model => model.MoveToStageText)</button>
</ul>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
这是结果嘛returns
我怀疑 <tr class="accordion-toggle" data-toggle="collapse" data-target="#" data-bind="attr: {'data-target': '#' + RecipeName}">
需要
<tr class="accordion-toggle" data-toggle="collapse" data-target="#" data-bind="attr: {'data-target': '#' + RecipeName()}">
另一种选择是在您的视图模型上放置一个 属性 来执行您需要的逻辑,例如
function ViewModel(){
var self = this;
self.RecipeName = ko.observable();
self.RecipeNameHash = ko.pureComputed(function(){
return '#' + self.RecipeName();
});
}
然后 table 行变为
<tr class="accordion-toggle" data-toggle="collapse" data-target="#" data-bind="attr: {'data-target': RecipeNameHash}">