Angularjs 1.4 - Два способа привязки - Введенный текст изменен, но область действия не? - PullRequest
0 голосов
/ 24 мая 2018

У меня очень странная проблема с AngularJS 1.4 (TypeScript).Проблема в контроллере, у меня есть переменная, и это значение можно просмотреть в текстовом поле ввода. Однако, когда я редактирую значение в этом текстовом поле и нажимаю кнопку, значение этой переменной не изменяется (!).

HTML-представление

<div class="form-group">   
     <label>Title</label>
     <input class="form-control" ng-model="serviceTitle">
</div>


<div class="form-group">
     <button class="btn btn-primary" ng-click="updateServiceIdentification()">Update Service Identifcation</button>
</div>

Контроллер:

 $scope.serviceTitle = "Test";

 $scope.updateServiceIdentification = ()=> {
    // after changing value in view, the value here is still "Test"????
    alert($scope.serviceTitle);
 }

Если я добавлю тестовую метку в представлении HTML

<h1>{{serviceTitle}}</h1>

при изменении значения входного текстового поля,новое значение может быть напечатано на этой этикетке.

1 Ответ

0 голосов
/ 24 мая 2018

Проблема возникает из-за этого и вызвала у меня несколько часов.Если я добавлю текстовое поле под этот элемент, он не может работать.Поместите его наружу, alert () возвращает измененное значение из текстового поля.

    <input class="form-control" ng-model="serviceTitle">
    <input type="button" class="btn btn-primary" ng-click="updateServiceIdentification()" value="Update Service Identifcation"/>
    <accordion>
            <accordion-group>
              <accordion-heading>
                        some text here, on the left side of the header.

                        <div class="pull-right">
                          <span>1st info</span>
                          <span>2nd info</span>
                          <span>maybe 3rd?</span>
                        </div>                
              </accordion-heading>
             <!------------ Doesn't work if it is inside ------------->
            </accordion-group>    
          </accordion>

Реальная проблема должна заключаться в том, что «строка является примитивом. Когда Angular присваивает значение, оно изменяетсяуказатель на значение, поэтому контроллер смотрит на старое значение, потому что у него есть старый указатель на значение. "Damax - Ng-модель не обновляет значение контроллера

Обновить контроллер следующим образом:

$scope.output = {serviceTitle: "1234567"};                
$scope.serviceTitle = "asdadasdsad";

$scope.updateServiceIdentification = (...args: any[])=> {
     alert($scope.output.serviceTitle);
}

, и ввиду этого он может работать под элементами аккордеона.

   <uib-accordion close-others="false">
       <uib-accordion-group is-open="isAvailableLayersOpen">
           <input class="form-control" ng-model="output.serviceTitle">
           <input type="button" class="btn btn-primary" ng-click="updateServiceIdentification()" value="Update Service Identifcation"/>
       </uib-accordion-group>
  </uib-accordion>
...