如何允许用户将角度范围变量插入文本框

时间:2016-03-29 20:27:59

标签: javascript angularjs

我有这样的textarea:

<textarea ng-model="content"></textarea>
{{content}}

这样的变量:

$scope.name = 'Billy'

我想让用户能够将变量插入到textarea中,这样如果他们放了:

Hello {{name}}

{{content}}的输出可以是Hello Billy

我可能还想简化它,以便用户可以在textarea中键入类似:Hello [Name]的内容,并以相同的方式解析。

3 个答案:

答案 0 :(得分:2)

这是一个掠夺者。 https://plnkr.co/edit/0VH106Gxz7xjhCj5NMpT?p=preview

最好把它放在一个指令中。但这里又快又脏了

app = angular.module('plunkr', []);

app.controller('messages', function($scope, $interpolate){
  $scope.name = 'billy';
  $scope.evalText = function(msg){
    console.log(msg)
    $scope.message = $interpolate(msg)($scope)
  }

});

答案 1 :(得分:1)

如果我的问题是正确的,请尝试使用interpolate

答案 2 :(得分:1)

codenamejames 是重点。但如果有人想在全球范围内使用它,他们可以扩展它以创建一个过滤器,如下所示。

<html ng-app="nameApp">
  <head>
  </head>
  <body ng-controller="NameCtrl">
      <textarea ng-init="content='Name is {{name}}'" ng-model="content"></textarea>
       {{content | compile:this}}
  </body>
</html>

跟随Js:

var nameApp = angular.module('nameApp', []);
nameApp.controller('NameCtrl', function ($scope){
    $scope.name = 'John';
  });

nameApp.filter('compile', function($interpolate) {
  return function(input, scope) {
    return input ? $interpolate(input)(scope) : '';
  };
})

现场演示:http://codepen.io/anon/pen/RaZpaO