2015-11-04 2 views
0

Я пытаюсь отметить некоторые значения в списке как красный цвет шрифта и оставить по умолчанию на основе некоторого условия. Когда я пытаюсь назначить логический var для конкретных данных в списке, я получаю «TypeError: Невозможно назначить только для чтения свойства сопоставляют из 123; Мой код s:TypeError in angularjs

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 мне нужно установить что-то для каждого элемента и сделайте эти элементы в списке красными.

ответ

0

Вы устанавливаете для свойства значение 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> 
+0

любая идея, как я могу сделать эту работу в html? Мне нужно что-то установить и сделать эти элементы в списке красными. – Bidisha

+0

Не могли бы вы предоставить немного больше кода? Может быть, образец данных для $ scope.searchResults? –

+2

Оберните цифры в объект. '$ scope.searchResults [index] .linkedRecords [i] = {значение: 123, match: true};' Затем введите 'source.match' и' source.value' в свой HTML. –