将值分配给Knockout observable?

时间:2015-10-08 20:11:33

标签: javascript jquery html knockout.js

当页面通过来自控制器的VIEWDATA对象加载时,我有一个页面从数据库中填充其字段(下拉列表和文本框)。

我使用KnockoutJS进行数据绑定,下面是场景

HTML& JS(下拉)

@if (Filter!= null)
{
    <select  data-bind="options: RsnAdmAct, 
                        value: selectedRsnAdmAct, 
                        optionsCaption:'Choose...', 
                        optionsValue:'RsnAdminActionID', 
                        optionsText:'RsnAdminActionDescp',
                        optionsAfterRender: function()
                        {
                            setOptionRSN(@Filter.RsnForAdminAction);
                        }">
     </select>
}


self.RsnAdmAct = ko.observableArray([]);
self.selectedRsnAdmAct = ko.observable();
$.getJSON("GetRAA", null, function (data) {
    self.RsnAdmAct(data);
});

self.selectedRsnAdmAct = ko.observable();
self.setOptionRSN = function (x) {//reason for admin action dd
    self.selectedRsnAdmAct(x);
};

这会使用指定的值&#34; X &#34;更新下拉列表。

但是同样没有为文本框分配值,如下所示

HTML&amp; JS(文本框)

@if (@Filter != null)
{
    <input placeholder="Downstream"  
           data-bind="value: DownStream,
                      optionsAfterRender:function()              
                      {
                         setOptionDstream(@Filter.DownstreamNumber);
                      }">
 }

 self.DownStream = ko.observable();   
 self.setOptionDstream = function (x) {//down stream number
     self.DownStream(x);
 };  

2 个答案:

答案 0 :(得分:0)

optionsAfterRender适用于选项;文本输入没有选项。设置DownStream的值将设置文本框的值,因为这是value绑定的工作方式。

答案 1 :(得分:0)

我试图寻找一种正确的方法来做到这一点,但下面是它的工作方式,没有其他选择工作。我不得不移动函数,将值分配给texbox observable到drop的render属性之后的选项如下所示

@if (Filter!= null)
{
<select  data-bind="options: RsnAdmAct, 
                    value: selectedRsnAdmAct, 
                    optionsCaption:'Choose...', 
                    optionsValue:'RsnAdminActionID', 
                    optionsText:'RsnAdminActionDescp',
                    optionsAfterRender: function()
                    {
                        setOptionRSN(@Filter.RsnForAdminAction);
                        setOptionDstream(@Filter.DownstreamNumber);
                    }">
 </select>
}

这是它对我有用的唯一方式。感谢您的帖子和评论