1

В контроллере у меня есть код ниже:

//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; 
}); 

Это работа, я вижу ЬавЬЫат Заказчика.

В контроллере у меня тоже есть этот код. Эта функция вызывается, когда я ckick на гиперссылке

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

изменить текст на входе и я нажимаю на ссылку. Вызывается WEBAPI, данные, возвращаемые в функции reload, верны, но представление не обновляется.

Я что-то пропустил?

ответ

0

value="{{customer.lastName}}" будет оценивать только выражение в первый раз & то он заменяет с customer.lastName значения, которое является 1, DOM будет выглядеть, как показано ниже

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

имевших избавившись от {{customer.lastName}} значения, изменения в области видимости переменной никогда не произойдут к этому полю ввода.


Вы должны использовать ng-model там есть два способа связывания, который будет обновлять вход & значение области, как только вы обновляете значение области.

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

Demo Plunkr