【问题标题】:AngularJS Select and Radio Buttons Lose Binding After AjaxAngularJS 选择和单选按钮在 Ajax 之后失去绑定
【发布时间】:2014-02-27 15:31:07
【问题描述】:

我查看了所有可以找到的关于此问题的帖子,但我看不出我的代码有什么问题。

我为选择框和单选按钮创建了一个指令:

选择:

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 部分,例如:

&lt;div radio-button fieldobj="data.GotWebsite"&gt;&lt;/div&gt;

【问题讨论】:

  • 能否发布您发送 ajax 事件的代码以及您使用这些指令的 HTML?
  • @rob 发布了 HTML 部分。关于 ajax 部分,我宁愿不发布太多代码,所以这成为一个没有吸引力的问题 :) 我可以告诉你,我放置了一个带有值的 div,并且我在 ajax 返回时正确地看到了它们,所以我确定返回的值正确。
  • 也许发布您的控制器代码也会有所帮助。在您的控制器中,服务器响应后,data.GotWebsite 是否设置为正确的值?
  • @sethro 是的,所有数据都正确返回。

标签: javascript ajax angularjs


【解决方案1】:

我想通了。

我必须在输入元素上将 value="true" 更改为 ng-value="true"

ajax 返回的JSON 为单选按钮返回true/false,我猜ng-value="true" 会评估表达式并因此解决问题。

【讨论】:

    猜你喜欢
    • 2014-06-14
    • 1970-01-01
    • 2014-04-06
    • 2015-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-23
    相关资源
    最近更新 更多