根据 ajax 响应更改单选按钮值

Change radio button value based on ajax response

我将对象数组与带有默认对象的 JSViews 绑定在一起。我正在显示带有单选按钮的默认按钮。当我想将另一个对象设置为默认对象时,我需要进行 ajax 调用并将其更改为默认对象,仅当调用成功时使用预定义的 status.I 我正在使用 ajax 的承诺requests.I 知道如果我 return 在函数中为 false,单选按钮状态将不会 change.I 尝试过这样的事情,但 work.I 我没有假设,因为我 returning promise,它在 returned 时不会解析为 true 或 false。如何实现?

<input type="radio" name="default" data-link="checked{:isDefaultObj} {on ~setAsDefault}">

JS

setAsDefault:function(){
  return service.setAsDefaultObj('123').then(function(response){
        return response; //response is either true or false;
    },function(response){
       return response;
   });
 }

对于 ~setAsDefault - 您可以 return false 以便跳过检查输入的默认点击操作。

然后我建议将数据链接 属性 与单选按钮组相关联,这样您就可以在您的承诺 returns [=29 之后观察设置新的 one/original =].

这里是数据链接到 selectedCar 的示例,延迟设置了适当的值。

要么使用单向数据链接:

<label><input name="cars" type="radio" value="none" data-link="{:selectedCar} {on getAjax 'none'}"/>
  None</label><br/>
<label><input name="cars" type="radio" value="vlv" data-link="{:selectedCar} {on getAjax 'vlv'}"/>
  Volvo</label><br/>
<label><input name="cars" type="radio" value="frd" data-link="{:selectedCar} {on getAjax 'frd'}"/>
  Ford</label><br/><br/>

或者使用您的checked{...}方法

<label><input name="cars2" type="radio" value="none" data-link="checked{:selectedCar==='none'} {on getAjax 'none'}"/>
  None</label><br/>
<label><input name="cars2" type="radio" value="vlv" data-link="checked{:selectedCar==='vlv'}  {on getAjax 'vlv'}"/>
  Volvo</label><br/>
<label><input name="cars2" type="radio" value="frd" data-link="checked{:selectedCar==='frd'}  {on getAjax 'frd'}"/>
  Ford</label><br/><br/>

在每种情况下都使用以下代码方法:

var data = {
  selectedCar: "frd",
  getAjax: function(val) {
    var sel = data.selectedCar;
    $.ajax({
      type: 'GET',
      url: "../TEST" + val + ".html",
      timeout: 5000,
      success: function(){
        $.observable(data).setProperty("selectedCar", val);
      },
      error: function(xhr, textStatus, errorThrown){
        $.observable(data).setProperty("selectedCar", val);
        $.observable(data).setProperty("selectedCar", sel);
      }
    });
    return false;
  }
};