2014-02-27 58 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"计算表达式,因此解决这些问题。