Javascript 如何在Angular中动态替换值?

Javascript 如何在Angular中动态替换值?,javascript,angularjs,Javascript,Angularjs,我的URL结构: /json/feed?car=${cars}&colour=${color}&model=VW 我想用我现有的JavaScriptvar替换${}中的内容(var cars,var colors,等等),但是我不确定如何使用Angular轻松做到这一点 我想: $scope.newString = oldString.replace("${cars}","cars"); 工作正常,还是有一种使用JavaScript的%s方法? 使用Angular哪种方法更好

我的URL结构:

/json/feed?car=${cars}&colour=${color}&model=VW
我想用我现有的JavaScript
var
替换
${}
中的内容(
var cars
var colors
,等等),但是我不确定如何使用Angular轻松做到这一点

我想:

$scope.newString = oldString.replace("${cars}","cars");
工作正常,还是有一种使用JavaScript的
%s
方法?
使用Angular哪种方法更好?

替换为变量而不是字符串

$scope.newString=oldString.replace(“${cars},$scope.cars”)

请看一下这个以供参考

您可以简单地链接
。替换

$scope.new = old.replace('${cars}', $scope.car).replace('${color}', $scope.color).replace('${model}', $scope.model);

替换为变量而不是字符串

$scope.newString=oldString.replace(“${cars},$scope.cars”)

请看一下这个以供参考

您可以简单地链接
。替换

$scope.new = old.replace('${cars}', $scope.car).replace('${color}', $scope.color).replace('${model}', $scope.model);

您可以使用angularjs的服务。Interpolate服务使用angular js表达式,它应该由{{}而不是{}组成,以便替换

app.controller('MainCtrl', function($scope,$interpolate) {
  $scope.name = 'World';

  function escapeRegExp(string) {
    return string.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1");
}
  function replaceAll(string, find, replace) {
    return string.replace(new RegExp(escapeRegExp(find), 'g'), replace);
  }

  $scope.interpolate = function ( ) {
    var context = { cars :"myCars", color:"red"};
    var url = "/json/feed?car=${cars}&colour=${color}&model=VW";
    var t1 = replaceAll(url,"{","{{");
    var url2 = replaceAll(t1,"}","}}");
    var exp = $interpolate(url2);
    console.log(exp(context)); 
  }

  $scope.interpolate();
});
输出:/json/feed?car=$myCars&color=$red&model=VW

您可以使用angularjs的服务。Interpolate服务使用angular js表达式,它应该由{{}而不是{}组成,以便替换

app.controller('MainCtrl', function($scope,$interpolate) {
  $scope.name = 'World';

  function escapeRegExp(string) {
    return string.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1");
}
  function replaceAll(string, find, replace) {
    return string.replace(new RegExp(escapeRegExp(find), 'g'), replace);
  }

  $scope.interpolate = function ( ) {
    var context = { cars :"myCars", color:"red"};
    var url = "/json/feed?car=${cars}&colour=${color}&model=VW";
    var t1 = replaceAll(url,"{","{{");
    var url2 = replaceAll(t1,"}","}}");
    var exp = $interpolate(url2);
    console.log(exp(context)); 
  }

  $scope.interpolate();
});
输出:/json/feed?car=$myCars&color=$red&model=VW


用{{}代替${}和你的作用域变量一起使用。URL实际上是在服务器发送的JS变量中返回给我的,因此我尝试更改变量的原因——这些是占位符标记。您必须像前面一样进行替换,只是替换为变量而不是字符串。请看答案。不要将${}与作用域变量一起使用{{}。URL实际上是在服务器发送的JS变量中返回给我的,因此我尝试更改变量的原因-这些是占位符标记。您必须像前面一样进行替换,只是替换为变量而不是字符串。查看答案。我将如何同时更新这两个值:$scope.newString=oldString.replace(“\${cars}”、“\${color}”、$scope.cars、$scope.color);工作正常?在我的情况下工作正常。我如何同时更新这两个值:$scope.newString=oldString.replace(“\${cars}”、“\${color}”、$scope.cars、$scope.color);工作好吗?我的案子做得很好。