将附加属性传递给函数绑定

时间:2017-03-03 14:27:38

标签: knockout.js

我希望在将value绑定到函数时传递其他属性。目前它确实作为单向绑定工作(设置值),但我也想在更新时设置属性。

HTML代码片段:

<div data-bind="with: selectedProfile">
    <!-- ko foreach: Components -->
        <div class="row form-group">
            <!-- ko foreach: Variables -->
            <div class="row form-group">
                <input type="text" data-bind="value: $root.overridenValue(VariableId)"/>
                <!--I'd like something like: $root.overridenValue(value, VariableId)-->
            </div>
            <!-- /ko -->
        </div>
    <!-- /ko -->
</div>

JS代码片段:

self.overridenValue = function (variableId /*, value*/) {
    var variable = _.find(self.selectedProfile.Variables(), function(p) { return p.VariableId() === variableId() });
    //if value passed, then set the required property

    return variable ? variable.Value : null;
};

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:0)

找到答案。

可以将$element.value传递给绑定:

<input type="text" data-bind="value: $root.overridenValue($element.value, VariableId)"/>

然而考虑一下(并且由于评论),我最初采用的方法似乎过于复杂。更清洁的是改变模型的标准化。