Knockoutjs 在运行时更改绑定

用户2475096

请用这个简单的代码来说明这个案例:

<select id="se">
  <option value="0">EN</option>
  <option value="1">FR</option>
  <option value="2">AR</option>
  <option value="3">SP</option>
</select>  
<input id="inp"  data-bind='textInput: DESCRIPTION_FR' />


<script src="../Scripts/jquery-1.9.1.min.js"></script>
<script src="../Scripts/knockout-3.4.0.js"></script>

<script type="text/javascript">
  var PRDVM = function () {
      var self = this;
      self.ID = ko.observable(0);
      self.DESCRIPTION_FR = ko.observable('FR');
      self.DESCRIPTION_EN = ko.observable('EN');
      self.DESCRIPTION_AR = ko.observable('AR');
      self.DESCRIPTION_SP = ko.observable('SP');
      self.IMAGE = ko.observable('/images/noimage.png');
};
ko.applyBindings(new PRDVM());
</script>

我想要的是通过更改下拉列表选择在运行时更改输入的属性绑定来切换语言

关于如何做到这一点的任何想法都会很棒。

这里开始小提琴https://https://jsfiddle.net/smtsghqm/2/

谢谢 。

杰森说话

您可以尝试使用可写的计算属性,该属性根据所选选项确定要显示/更新的 observable。绑定将是计算的,不必更改。

var PRDVM = function () {
    var self = this;
    self.SelectedValue = ko.observable();
    self.ID = ko.observable(0);
    self.DESCRIPTION_FR = ko.observable('FR');
    self.DESCRIPTION_EN = ko.observable('EN');
    self.IMAGE = ko.observable('/images/noimage.png');
    
    self.DESCRIPTION = ko.computed({
        read: function(){
            switch(self.SelectedValue()){
                case "0": 
          	        return self.DESCRIPTION_EN();
                case "1": 
          	        return self.DESCRIPTION_FR();
            }
        },
        write: function(value){
            switch(self.SelectedValue()){
                case "0": 
          	        self.DESCRIPTION_EN(value);
          	        break;
                case "1": 
          	        self.DESCRIPTION_FR(value);
          	        break;
            }
        }
    })
};
ko.applyBindings(new PRDVM());
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>

<select id="se" data-bind="value: SelectedValue">
  <option value="0">EN</option>
  <option value="1">FR</option>
  <option value="2">AR</option>
  <option value="3">SP</option>
</select>
<br /><br /><br />
    <input id="inp"  data-bind='textInput: DESCRIPTION' />

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章