$ scope变量未重新加载

时间:2016-03-16 19:13:28

标签: angularjs asp.net-web-api data-binding angularjs-bindings

在控制器中,我有以下代码:

//View
<input type="text" value="{{customer.lastName}}" />

//Controller
$scope.getbycode = function (customerCode) {
    var deferred = $q.defer(),
        getCustomerRequest = {
            code: customerCode
        };

    $http({ method: 'POST', url: 'api/customer/getbycode', data: getCustomerRequest })
        .success(function (data) {
            deferred.resolve(data);
        }).error(function () {
            deferred.reject();
        });

    return deferred.promise;
};

$scope.getbycode($routeParams.customerCode).then(function (data) {
    $scope.customer = data.customer;
});

这是工作,我看到了客户的姓氏。

在控制器中我也有这个代码。当我点击超链接时调用此函数

$scope.reload = function (customerCode) {
    $scope.getbycode(customerCode).then(function (data) {
        $scope.customer = data.customer;
        alert($scope.customer.lastName);
    });
};

我更改输入中的文本,然后单击超链接。 调用WEBAPI,reload函数返回的数据正确但视图未更新。

我错过了什么?

1 个答案:

答案 0 :(得分:0)

value="{{customer.lastName}}"只会在第一时间评估表情。然后它取代customer.lastName值为1,DOM将如下所示

<input type="text" value="1" />

已取消{{customer.lastName}}值,范围变量的更改将永远不会发生在该输入字段中。

您应该使用ng-model进行双向绑定,这将更新输入&amp;更新范围值后的范围值。

<input type="text" ng-model="customer.lastName" />

Demo Plunkr