Mam powtórzenie ng, które ma nowy element dodany, gdy tylko istniejący "ostatni" element zostanie zmodyfikowany w jakikolwiek sposób. Moja próba kątomierz wygląda mniej więcej tak:Używanie kątomierza do testowania aplikacji angularjs, w jaki sposób zachować odniesienie do jednego z wierszy elementu .all, gdy tablica zmienia się podczas pracy z nim?
var emptyPerson = this.people.last() // this gets me the last row of the ng-repeat
emptyPerson.element(by.css('.firstName')).sendKeys('first'); // this sets the firstname correctly but then the app adds a new row to the ng-repeat because of the model change here.
emptyPerson.element(by.css('.lastName')).sendKeys('last'); // this sets the lastname of the new row instead of the row that emptyPerson previously referenced
Czy istnieje jakiś sposób, aby zasadniczo powiedzieć emptyPerson trzymać się tego samego elementu, aż skończymy z nim?
Przykład HTML przed FirstName jest edycja:
<div ng-repeat="person in object.People" class="student ng-scope">
<div type="text" ng-model="person.FirstName" skip-label="true" placeholder="First" validator="svalidators[$index]" class="layout-default field field-FirstName type-text">
<input type="text" ng-focus="myFocus()" ng-blur="myBlur()" class="form-control" placeholder="First" ng-model="lModel.val" name="person-FirstName">
</div>
<div type="text" ng-model="person.LastName" skip-label="true" placeholder="Last" validator="svalidators[$index]" class="layout-default field field-LastName type-text">
<input type="text" ng-focus="myFocus()" ng-blur="myBlur()" class="form-control" placeholder="Last" ng-model="lModel.val" name="person-LastName">
</div>
przykład po FirstName jest edycja:
<div ng-repeat="person in object.People" class="student ng-scope">
<div type="text" ng-model="person.FirstName" skip-label="true" placeholder="First" validator="svalidators[$index]" class="layout-default field field-FirstName type-text">
<input type="text" ng-focus="myFocus()" ng-blur="myBlur()" class="form-control" placeholder="First" ng-model="lModel.val" name="person-FirstName">
</div>
<div type="text" ng-model="person.LastName" skip-label="true" placeholder="Last" validator="svalidators[$index]" class="layout-default field field-LastName type-text">
<input type="text" ng-focus="myFocus()" ng-blur="myBlur()" class="form-control" placeholder="Last" ng-model="lModel.val" name="person-LastName">
</div>
<div ng-repeat="person in object.People" class="student ng-scope">
<div type="text" ng-model="person.FirstName" skip-label="true" placeholder="First" validator="svalidators[$index]" class="layout-default field field-FirstName type-text">
<input type="text" ng-focus="myFocus()" ng-blur="myBlur()" class="form-control" placeholder="First" ng-model="lModel.val" name="person-FirstName">
</div>
<div type="text" ng-model="person.LastName" skip-label="true" placeholder="Last" validator="svalidators[$index]" class="layout-default field field-LastName type-text">
<input type="text" ng-focus="myFocus()" ng-blur="myBlur()" class="form-control" placeholder="Last" ng-model="lModel.val" name="person-LastName">
</div>
Czy wejście "first name" poprzedniego do ostatniego elementu nie powinno mieć atrybutu "value" ustawionego na "first"? – alecxe
nie. skojarzony model jest ustawiony jako pierwszy, a wartość właściwości elementu wejściowego jest ustawiona jako pierwsza, ale sam atrybut wartości nie istnieje i nie jest ustawiony. – Robert
Okay, obawiam się, że po rozpoczęciu wypełniania danych musisz zbudować swego rodzaju "ręczne", brudne sprawdzanie. Jedną opcją byłoby sprawdzenie, czy wartość odpowiedniego modelu na wejściu imienia nie jest pusta. Lub po prostu przełącz się na element przed ostatnim po wypełnieniu imienia. Nie ładnie, zgadzam się. – alecxe