我有这样的textarea:
<textarea ng-model="content"></textarea>
{{content}}
这样的变量:
$scope.name = 'Billy'
我想让用户能够将变量插入到textarea中,这样如果他们放了:
Hello {{name}}
{{content}}
的输出可以是Hello Billy
我可能还想简化它,以便用户可以在textarea中键入类似:Hello [Name]
的内容,并以相同的方式解析。
答案 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) : '';
};
})