我有很多我继承的代码。它是按照原始规范工作的,所以虽然它可能是也可能不是“正确”的做事方式,但确实有效,我宁愿不搞乱它。 (我对角度非常新,并且在一个紧迫的期限内 - 我现在没有时间来“修复”那些没有破坏的东西,即使它们没有以“正确”的方式完成。)
我有一个复选框和一组地址字段。选中该复选框后,将运行一个填充地址字段的函数。
<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
语句正在运行。但观点并未更新;除了初始占位符值之外,该复选框显然未被选中,字段为空。
我错过了什么?如何使该功能更新视图?
答案 0 :(得分:0)
你可以尝试
var i= model.handlePrepopAddress();
它可能有用。