0

我继承了大量代码。它按照原始规范工作,因此尽管它可能是也可能不是“正确”的做事方式,但它确实有效,我不想弄乱它。(我对 Angular 非常陌生,并且在紧迫的期限内 - 我现在没有时间“修复”没有损坏的东西,即使它们没有以“正确”的方式完成。)

我有一个复选框和一组地址字段。选中该复选框后,将运行一个填充地址字段的函数。

<input id='as_check' type="checkbox" ng-model='model.prepop_addr' ng-change="model.handlePrepopAddress()">
<input type="text" placeholder="Address 1" required ng-model='model.payment.addr1'/>
<input type="text" placeholder="Address 2" ng-model='model.payment.addr2'/>
<input type="text" placeholder="City" required ng-model='model.payment.city'/>
<input type="text" placeholder="State" required ng-model='model.payment.state'/>
<input type="text" placeholder="Zip" required ng-model='model.payment.zip'/>

在我的控制器中,我有一个名为handlePrepopAddress()

model.handlePrepopAddress = function () {
        if (model.prepop_addr) {
            console.log("prepop is true");
            var del_addr = $window.user_state.deliveryAddress;

            model.payment.addr1 = del_addr.address;
            model.payment.addr2 = null;
            model.payment.city = del_addr.city;
            model.payment.state = del_addr.state;
            model.payment.zip = del_addr.zip;
        } else {
            console.log("prepop is false");
            model.payment.addr1 = null;
            model.payment.addr2 = null;
            model.payment.city = null;
            model.payment.state = null;
            if (!model.payment.saved) {
                model.payment.zip = null;
            }
        }

        return true;
    };

当我单击复选框时,它会正确运行并更新各个字段。要求已经改变,客户现在希望复选框默认为选中状态,然后默认字段的值。我认为我可以在控制器的开头运行该函数,而不是复制代码,如下所示:

place_order.controller('AsCreditCardCtrl', ['$scope', 'PaymentModel', function ($scope, model) {
    $scope.model = model;
    model.prepop_addr = true;
    model.handlePrepopAddress();
}]);

该函数正在运行,因为console.log我在函数中的语句正在运行。但是视图没有更新;该复选框明显未选中,除了初始占位符值外,其他字段为空。

我错过了什么?如何使函数更新视图?

4

1 回答 1

0

你可以试试

var i=  model.handlePrepopAddress();

它可能会起作用。

于 2014-04-10T06:40:23.280 回答