【问题标题】:AngularJS ng-model update value on conditionAngularJS ng-model 根据条件更新值
【发布时间】:2015-10-30 13:56:02
【问题描述】:

我对 AngularJS 很陌生,并且有一个(可能是简单或愚蠢的)问题。

我有一个输入单选框,带有一个 ng-model,值取决于一个条件

<input type="radio" name="q_{{question.id}}" ng-model="question.option.id" value="{{!survey.isOptionSelected(question.related_question_option_id) ? 0 : opt.id}}">

我的问题是 ng-model="question.option.id" 在条件改变时(或如果)没有改变.. 有没有办法用当前值更新它?

【问题讨论】:

    标签: angularjs angular-ngmodel


    【解决方案1】:

    也许我错了,但是查看您的代码,您似乎正在尝试根据复选框启用/禁用某些单选按钮。

    <input type="radio" name="q_{{question.id}}" 
           ng-model="question.option.id" 
           value="{{opt.id}}" 
           ng-disabled="survey.isOptionSelected(question.related_question_option_id)" />
    

    这不是更好的选择吗?

    而且,如果您的条件发生变化,您必须在可以更改的选择上添加$watch,并在回调中更新question.option.id

    【讨论】:

    • .directive('surveyOption', [function () { return { restrict: 'A', scope : { question: "=surveyOption" }, link: function (scope, iElement, iAttrs) { iAttrs.$observe('disabled', function(disabled) { if(disabled) { if(typeof scope.question.option !== "undefined") { scope.question.option.id = 0; } } }); } }; }])
    【解决方案2】:

    您需要将value 替换为ng-valuehttps://docs.angularjs.org/api/ng/directive/ngValue

    【讨论】:

    • 这是一个开始 ;) ...但是当条件发生变化时它仍然没有更新 question.option.id,我可以看到值更新为“0”但不是 question.option.id .
    • 对。也许您应该尝试绑定“option”而不是 option.id。这样,如果选项内容发生变化,对象引用仍然是相同的,您无需执行任何其他操作。缺点是您必须引用同一个对象。也许这可以帮助:stackoverflow.com/questions/19281404/…
    猜你喜欢
    • 1970-01-01
    • 2016-12-09
    • 2016-10-17
    • 1970-01-01
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-11
    相关资源
    最近更新 更多