2016-10-28 5 views
0

私は、JSViewsを持つオブジェクトの配列をデフォルトオブジェクトでバインドします。私はラジオボタンでデフォルトのものを表示しています。別のオブジェクトをデフォルトにしたいときは、あらかじめ定義されたステータスでコールが成功した場合にのみ、ajaxコールを作成してデフォルトオブジェクトに変更する必要があります。私はAjaxリクエストの約束を使用しています。ラジオボタンの状態は変更されません。私はこれを試してみましたが、うまくいきませんでした。私は約束を返すので仮定しています。返されるまでにはtrueまたはfalseに解決されません。どのように達成することができますか? ~setAsDefaultについてはajaxレスポンスに基づいてラジオボタンの値を変更します

<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; 
    }); 
} 
+0

答えた場合あなたのために働いた、あなたはそれを "受け入れる"ことができますか?ありがとうございました(それはあなたの答えに費やされた時間と労力を認めていません) – BorisMoore

+0

@BorisMoore:すみません、私は無関係のプロジェクトで数週間働いていたので、解決策に答えられませんでした。私は解決策を試し、ステータスを更新します。あなたのタイムリーな対応は非常に高く評価されています。フォローアップしないことに対する謝罪。私は将来それを確実にするでしょう。ありがとう。 – user1776573

答えて

1

- デフォルトのクリックアクションは、入力がスキップされていることを確認するので、falseを返すことができます。

次に、ラジオボタングループにデータリンクされたプロパティを関連付けることをお勧めします。したがって、あなたの約束が成功/エラーを返した後、新しいもの/元のものを観測可能に設定することができます。

データのリンクを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; 
    } 
}; 
+0

@ user1776573 - 上記はあなたのために機能しましたか? – BorisMoore

+0

完全に正常に動作します。ありがとう.. – user1776573

関連する問題