在控制器初始化期间调用angularjs函数

时间:2014-04-09 20:52:51

标签: angularjs checkbox angularjs-view

我有很多我继承的代码。它是按照原始规范工作的,所以虽然它可能是也可能不是“正确”的做事方式,但确实有效,我宁愿不搞乱它。 (我对角度非常新,并且在一个紧迫的期限内 - 我现在没有时间来“修复”那些没有破坏的东西,即使它们没有以“正确”的方式完成。)

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

<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语句正在运行。但观点并未更新;除了初始占位符值之外,该复选框显然未被选中,字段为空。

我错过了什么?如何使该功能更新视图?

1 个答案:

答案 0 :(得分:0)

你可以尝试

var i=  model.handlePrepopAddress();

它可能有用。