2014-02-27 56 views
0

我已經看過所有我可以找到關於這個問題的帖子,但我沒有看到我的代碼有什麼問題。AngularJS選擇和單選按鈕丟失綁定後Ajax

我創建了一個指令,兩個選擇框,單選按鈕:

選擇:

app.directive("selectBox", function() { 
    return { 
     replace: true, 
     scope: { 
      fieldobj: "=" 
     }, 
     template: '<div ng-show="fieldobj.IsRelevant"><span>{{fieldobj.Title}}: </span>' + 
      '<select ng-model="fieldobj.Value" ng-options="option for option in fieldobj.Options" ng-class="{fieldError : fieldobj.Errors.length > 0}"/></div>' 
    }; 
}); 

單選按鈕:

app.directive("radioButton", function() { 
    return { 
     replace: true, 
     scope: { 
      fieldobj: "=" 
     }, 
     template: '<div ng-show="fieldobj.IsRelevant"><span>{{fieldobj.Title}}: </span>' + 
      '<input type="radio" value="true" ng-model="fieldobj.Value" ng-class="{fieldError : fieldobj.Errors.length > 0}"/>Yes' + 
      '<input type="radio" value="false" ng-model="fieldobj.Value" ng-class="{fieldError : fieldobj.Errors.length > 0}"/>No</div>' 
    }; 
}); 

我的問題是,當我選擇一個值(在兩個控件中)並向服務器發送一個ajax,當數據返回時(並且我在fiddler/chrome調試器中看到數據返回正常),輸入元素爲空,即,單選按鈕被選中,選擇框的值爲0(空選擇)。

如果我在這裏編寫錯誤的代碼,並且您有更好的建議,那很好,但是如果有人能夠解釋爲什麼輸入變爲「空」,我也會很感激。

編輯:這是單選按鈕的HTML部分,例如的緣故:

<div radio-button fieldobj="data.GotWebsite"></div>

+0

你可以發佈你發送ajax事件的代碼,也可以發佈你使用這些指令的HTML嗎? – rob

+0

@rob發佈HTML部分。關於ajax部分,我寧願不要發佈太多的代碼,所以這成爲一個沒有吸引力的問題:)我可以告訴你,我放置了一個div的值,並且我在ajax return上正確地看到了它們,所以我知道肯定返回的值正確。 –

+0

也許這會有助於發佈您的控制器代碼。在你的控制器中,服務器響應後,'data.GotWebsite'設置爲正確的值? – sethro

回答

0

我已經想通了。

我必須在輸入元素上將value="true"更改爲ng-value="true"

JSON返回由AJAX返回的單選按鈕true/false,我的猜測是,ng-value="true"計算表達式,因此解決這些問題。