在转发器中访问值,修改和更新

时间:2017-10-11 10:10:12

标签: javascript angularjs

我已经检查过但找不到任何与我正在寻找的问题完全相同的问题 - 我有一个转发器在一个月内每天显示一个时钟和&时差。有时这些时间需要编辑,我希望功能在手动输入/输出时触发ng-change,调用计算基本/加班时间的Web服务并更新日期总数。

我有以下代码

<td class="Cell" ng-repeat="DT in Timesheet.DayTimesheets">
   <input type="text" ng-model="DT.ManualIn" class="DateInput" ng-blur="Changed(DT);"/>
   <input type="text" ng-model="DT.ManualOut" class="DateInput" ng-blur="Changed(DT);" />
   <input number-format type="text" ng-model="DT.TotalStdHoursManual" class="NumberInput" decimals="2" ng-show="Timesheet.EMP.PatternID != null" />
   <input number-format type="text" ng-model="DT.TotalOverTimeHoursManual" class="NumberInput" decimals="2" />
</td>

Angular -

    $scope.Changed = function (DT) {
        var GetRequest = $http.post("@Url.Action("CalculateDayTimesheet", "HOME")", { DT: DT })
            .then(function (response) {
                DT = response.data;
                // I want the DT.TotalStdHoursManual updated in the repeater
                // This is not ng-model in above html
                // DT.TotalStdHoursManual  = 1; // Even this doesn't work
            }, function (error) {
                ShowError(error);
            });
    };

上述Angular中的更新DT未反映在转发器中的ng-model中。

1 个答案:

答案 0 :(得分:0)

将对象引用分配给另一个对象不会修改对象本身:

var obj1 = {a:1};
var assign = obj1;
var obj2 = {a:2};
var assign = obj2;
console.log(obj1.a); // 1

要更新原始对象而不是仅更改引用,请使用angular.copy

angular.copy(response.data, DT);