2016-03-22 2 views
0

Новое в Angular, я получаю доступ к данным из db через службы $ http и хочу заменить значения в текстовом контенте, соответствующем словам, найденным в db.AngularJS: замена текста в цикле foreach

app.controller('myController', function($scope, $http) { 
    $scope.translate = function() { 
      $http 
      .get('translate.php') 
      .then(function(data){ 
       var alldata = data.data; 
       angular.forEach(alldata, function(v,k) { 
         $scope.message = alldata.replace("\\b"+v.one+"\\b/gi",v.two); 
       }); 
      }, function(data) { 
       // error handling 
     }); 
    }; 
}) 

У Textarea есть ng-model из "сообщений". Это не работает, и я получаю сообщение об ошибке:

TypeError: alldata.replace is not a function 
+0

Можете ли вы подтвердить, что ALLDATA является строкой? – user2263572

+0

@ user2263572 ahh, alldata - это массив. я изменил его на $ scope.message.replace, но теперь я получаю 'TypeError: Не могу прочитать свойство 'replace' undefined' error ... –

ответ

0

попробовать это,

app.controller('myController', function($scope, $http) { 
    $scope.message = ''; 
    $scope.translate = function() { 
      $http 
      .get('translate.php') 
      .then(function(data){ 
       var alldata = data.data; 
       angular.forEach(alldata, function(v,k) { 
         $scope.message = $scope.message.toString().replace("\\b"+v.one+"\\b/gi",v.two); 
       }); 
      }, function(data) { 
       // error handling 
     }); 
    }; 
}) 
+0

' TypeError: Невозможно прочитать свойство 'toString' неопределенной ошибки. Похоже, что он не признает $ scope.message? –

+0

Я вижу. Хорошо, я немного отредактировал ответ. –

+0

, вы можете убедиться, что ваш $ scope.message - это строка с места в карьер. отредактировал ответ. –

Смежные вопросы