【问题标题】:Trying to Dynamically Bind my "ng-true-value" in Angularjs尝试在 Angularjs 中动态绑定我的“ng-true-value”
【发布时间】:2014-07-27 23:05:40
【问题描述】:

我正在从数据库中加载一些值,我在这里尝试做的是有一个复选框,加载描述,然后有 2 个文本框,第一个是可编辑的,第二个是只读的。

两个文本框都以从数据库加载的值开始,然后当复选框被选中时,可编辑文本框中的值出现在只读文本框中,当它未被选中时,只读复选框值为0。

               <div ng-if="condition.ConditionDesc == 'Other'">
                    <div class="col-sm-1 unpad" ><input  type="checkbox" id=OtherCheckbox" ng-disabled="condition.Score_Potential.$invalid && condition.Score_Potential.$invalid" ng-model="condition.ConditionExists" ng-true-value="{{condition.Score_Potential}}" ng-false-value="0"/></div>
                    <div class="col-sm-2 unpad">{{ condition.ConditionDesc }} </div>
                    <div class="col-sm-5 unpad"><textarea id="OtherText" cols="30" placeholder="Please Specify." rows="1"></textarea></div>
                    <div class="col-sm-2"><input type="text" id="" name="" ng-model="condition.Score_Potential" class="form-control" format="number" required /></div>
                    <div class="col-sm-2"><input type="text" id="" name="" ng-model="condition.ConditionExists" class="form-control" readonly="readonly" format="number" required /></div>
                </div>

每当我在可编辑文本框中键入一个数字然后选中我的复选框时,它只会将可编辑文本框的原始值放入只读文本框中。有关如何解决此问题的任何想法?

【问题讨论】:

    标签: c# javascript angularjs model-view-controller


    【解决方案1】:

    您可以通过对模型数据进行一些基本的预处理和后处理来解决这个问题:

    去掉ng-true-value和ng-false-value,用临时模型替换模型,添加控制器:

    <input type="checkbox" id=OtherCheckbox" 
           ng-disabled="condition.Score_Potential.$invalid && condition.Score_Potential.$invalid" 
           ng-model="condition.conditionChecked" 
           ng-controller="CheckboxController" />
    

    设置不受 Score_Potential 更改影响的临时模型值的控制器:

    var cond = $scope.condition
    yourApp.controller('CheckboxController', ['$scope', function($scope) {
        $scope.$watch('condition.ConditionExists', function(conditionExistsValue) {
            cond.conditionChecked = (conditionExistsValue === cond.Score_Potential);
        }
    }]);
    

    保存时:根据我们的临时模型值有条件地将 ConditionExists 的值设置为 Score_Potential:

    var cond = $scope.condition
    cond.ConditionExists = cond.conditionChecked ? cond.Score_Potential : 0;
    

    【讨论】:

    • 非常感谢您的反馈!好的,请耐心等待,我对 Angular 还是很陌生,我仍然很难完全理解控制器。但我尝试添加该控制器,但我的代码在控制器外部出现“var cond = $scope.condition”行的问题。
    • 您是否已经使用范围函数实现了控制器,该函数将更改的模型提交到服务器?如果是这样,那就是您需要添加它的地方。如果没有,您需要在 &lt;form&gt; 元素上放置一个控制器,该控制器具有提交数据并将其放在那里的作用域函数。 ——这是相当高级的东西,所以如果你在理解概念上有困难;当我刚接触 AngularJS 时,这些视频对我很有帮助:egghead.io/technologies/angularjs?page=10
    • 哦,好吧,有道理,是的,我还没有这样做。非常感谢!虽然我还没有完全让它工作,但在你回答的帮助下我已经取得了一些进展,并且可能还会看一些这些视频。
    猜你喜欢
    • 2014-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多