获取索引值的问题

时间:2014-02-20 11:25:52

标签: javascript jquery html knockout.js

我正在尝试将值存储在输入标记中的属性中,如下所示。 以下代码将重复多次,并且可以使用索引保存不同无线电的值。

<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 -->

这是模态目标的一个示例。我想把这个模态称为普通模式。(即)它将从几个地方调用。我想显示适当的弹出窗口,以便从单选按钮中进行适当的点击。

但我得到的是最后一个索引的价值。这就是我的问题

3 个答案:

答案 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); }">