我正在尝试将值存储在输入标记中的属性中,如下所示。 以下代码将重复多次,并且可以使用索引保存不同无线电的值。
<div data-bind="attr : { name : 'ex['+$index()+']' }>
<input type="radio" name="value" data-target="#modal" data-bind="click:fun.fill($index())"/>
</div>
从上面的文本框中我可以得到该输入的索引。它指向一个来自bootstrap的常见模态函数,它打开一个弹出窗口。
<div class="modal fade">
<select data-bind="attr:{name:'assignedResources['+$index()+'][repeatedType]'},
options : $root.repeats,value : repeatedType"></select>
</div><!-- /.modal -->
这是模态目标的一个示例。我想把这个模态称为普通模式。(即)它将从几个地方调用。我想显示适当的弹出窗口,以便从单选按钮中进行适当的点击。
但我得到的是最后一个索引的价值。这就是我的问题
答案 0 :(得分:0)
我不是百分百肯定我理解你的问题,但这样的事情......
this.abc = ko.observable('');
this.fun = {
var that = this;
fill: function(index) {
console.log(that.abc());
}
}
答案 1 :(得分:0)
据我了解您的问题,您需要一个observable来存储您的值,然后您可以通过viewModel上的任何其他函数访问它。
这是我最初的方法,请告诉我你是否需要或澄清: http://jsfiddle.net/rdarioduarte/X8Rc4/
使用这样的模型:
var viewModel = function() {
this.abc = ko.observable('Value to store');
this.fun = function() {
alert(this.abc());
}
}
ko.applyBindings(new viewModel());
谢谢, 达里奥
答案 2 :(得分:0)
我对你的问题不太了解。但是,也许这可能会有所帮助:
1)在页面加载时获得输入元素index
的{{1}} automatically
函数可能需要viewModel
才能处理:
例如自定义绑定:
custom binding
例如html:
ko.bindingHandlers.saveIndex = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
var index = ko.utils.unwrapObservable(valueAccessor());
viewModel.fun(index); // accessing fun function on viewModel
// You can also access that function using bindingContext.$root
// bindingContext.$root.fun(index);
}
};
2)使用<input type="text" data-bind="saveIndex: $index()"/>
将索引存储到input value attribute
:
attr binding
3)将您的 <input type="text" data-bind="attr: { value: $index() }">
发送到viewModel函数onClick:
input attr value
您还可以对此行为使用事件绑定Knockout.Event-binding
<强>更新强>
试试这个:
<input type="text" value="thisIsExampleValue" data-bind="click: function() { $root.fun($element.value); }">