Angularjs中绑定变量的字符串

String with variables binding in Angularjs

本文关键字:字符串 变量 绑定 Angularjs      更新时间:2023-09-26

我有一个长字符串文本,在要替换的值前面有@符号。注意:长文本是生成的,它在文本文件中,在我读取文件后,我将它放在如下变量中:

$scope.text = "example @by goes @you";

我有"by"answers"you"变量,我该如何简单地应用它,以便视图中的文本获得正确的值?我该怎么做?

我可以创建自定义过滤器,搜索@by和@you,并替换值或类似的技术,但也许有一种简单的方法,我不知道angular在这种情况下使用这种方法。感谢

为什么一次又一次地在$digest中进行,而您可以轻松地转换来自te服务器的数据,而只需修改一次?

我创造了一个Plunker,他就是这么做的。

angular.module('myApp', []);
angular.module('myApp').service('DataService', ['$http', '$q', function($http, $q) {
  function getData() {
    return $q(function(resolve, reject) {
      $http.get('./response.json').then(function(response) {
        resolve(response.data.value);
      });      
    });
  }
  this.getData = getData;
}]);
angular.module('myApp').controller('MyController', ['DataService', function(DataService) {
  var mv = this;
  mv.data = 'retrieving data';
  var filtered = false;
  var filterValues= {
    '@first_name': 'Hans',
    '@last_name': 'Pock',
    '@age': '79'
  };
  DataService.getData().then(function(response) {
    mv.data = filter(response, filterValues);
  });
  function filter(text, values) {
    var result = text;
    angular.forEach(values, function(value, key){
      var regexp = new RegExp(key, 'g');
      result = result.replace(regexp, value);
    });
    return result;
  }
}]);

如果我理解正确的话,你想要这个。我创建了一个plnkr供你查看。

 var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {   $scope.name = 'World';
    $scope.text = "example @by goes @you"; });
app.filter('byfilter',function(){   return function(input,by,you){
    return input.replace('@by',by).replace('@you',you);
       } })
{{text|byfilter:'furkan':'ahmet'}}

furkan的例子是ahmet

http://plnkr.co/edit/GDXhSVxyDn8zeNK9HR3u?p=preview

这是一个简单的javascript。我不明白这和Angular有什么关系。

$scope.name = 'John';
$scope.age = 25;
$scope.text = 'My name is ' + $scope.name + ' and I''m ' + $scope.age + ' years old';