Я пытаюсь отметить некоторые значения в списке как красный цвет шрифта и оставить по умолчанию на основе некоторого условия. Когда я пытаюсь назначить логический var для конкретных данных в списке, я получаю "TypeError: не могу присвоить свойство только для чтения 'match' of 123; Мой код s:
angular.forEach($scope.searchResults, function (value, index) {
//populate searchResults
$scope.searchResults[index].name = "ABC";
$scope.searchResults[index].linkedRecords = [];
if(//check some condition){
$scope.searchResults[index].linkedRecords[i] ="123";
$scope.searchResults[index].linkedRecords[i].match=true;
}
});
<tr data-ng-repeat="searchResult in searchResults ">
<td >
<span data-ng-repeat="source in searchResult.linkedRecords" >
<span ng-if="!source.match">{{ source }}</span>
<span ng-if="source.match" style="color: red">{{ source }}</span>
<br>
</span></td>
</tr>
Любая идея, как я могу сделать эту работу в html? Мне нужно установить что-то для каждого элемента и сделать эти элементы в списке красными.
Вы устанавливаете свойство равным 123
тогда вы пытаетесь получить доступ к свойству, называемому 'match'
.
$scope.searchResults[index].linkedRecords[i] = 123;
В этот момент значение $scope.searchResults[index].linkedRecords[i]
равно 123
.
Это означает, что эта строка:
$scope.searchResults[index].linkedRecords[i].match=true;
Эквивалентно:
(123).match = true;
Это не сработает, потому что тип Number неизменен, что означает, что вы не можете добавлять или изменять свойства в их непосредственном представлении объектов.
Возможно, вы захотите обернуть или поместить свой номер внутри объекта. Затем вы можете добавить другие свойства к этому объекту.
$scope.searchResults[index].linkedRecords[i] = { value: 123, match: true };
Тогда ваш HTML будет выглядеть примерно так.
<span data-ng-repeat="source in searchResult.linkedRecords" >
<span ng-if="!source.match">{{ source.value }}</span>
<span ng-if="source.match" style="color: red">{{ source.value }}</span>
<br>
</span>