如何使用新创建的范围编译AngularJS模板?

时间:2014-10-29 23:39:04

标签: angularjs

我正在创建一个弹出模式,我希望能够使用新创建的$scope动态更新。我想做这样的事情:

var myNewScope = $scope.$new();
myNewScope.name = 'Jack';

ModalService.open('Hello, {{ name }}', myNewScope);

然后在我的ModalService.open方法中,我想用这个

编译给定范围的字符串
// ... other service stuff

service.open = function(template, scope){
    var compiledText = $compile(template)(scope);
    // I want compiledText = 'Hello, Jack'
}

1 个答案:

答案 0 :(得分:0)

Welp ......我不认为angular有内置的方法来做这件事。所以我只是建立了自己的版本。

app.controller('TestController', function($scope, $compile){

  var scope = $scope.$new();
  scope.percentage = {Value:55};
  scope.name = 'Jack';

  var msg = 'We are at {{ percentage.Value }}% done, {{ name }}.. {{ 4/3 }}';

  var element = msg.replace(/{{\s*([a-zA-Z0-9+-/*//\s.]*)\s*}}/g, function($0, $1){
    return scope.$eval($1);
  } );

  console.log(element); // prints 'We are at 55% done, Jack.. 1.3333333333333333' 
});

这似乎工作得很好