我已使用ng-modal="message"
绑定了我的输入框,并使用"message"
在HTML上的其他位置显示此{{message}}
。
问题是{{message}}
删除在文本框中输入的所有多个空格。
请找到代码https://jsfiddle.net/steinbring/kbwMY/
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app>
<input type="text" ng-model="message" />
<input type="range" min="1" max="100" ng-model="size" />
<hr>
<div style="font-size:{{size}}em;">{{message}}</div>
</div>
任何解决方案?
答案 0 :(得分:6)
将{{message}}
包裹在pre
标记中
<pre>{{message}}</pre>
使用范围方法将空格替换为
:
$scope.cleanup = function(message) {
return message.replace(/\s/g, ' ');
};
现在在HTML中使用:
{{cleanup(message)}}
请参阅下面的工作示例
angular.module("sa", []).controller("foo", function($scope, $sce) {
$scope.cleanup = function(message) {
message = message || '';
// Need to trust as HTML to allow as HTML entity
return $sce.trustAsHtml(message.replace(/\s/g, ' '));
};
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="sa" ng-controller="foo">
<input type="text" ng-model="message" />
<input type="range" min="1" max="100" ng-model="size" />
<hr>
<!-- Need to now always use "ng-bind-html" -->
<div style="font-size:{{size}}em;" ng-bind-html="cleanup(message)"></div>
</div>
&#13;
与提到的Pankaj Parkar一样,您也可以创建过滤器:
angular.module("sa", []).filter("allowWhiteSpace", function($sce) {
return function(message) {
message = message || '';
// Need to trust as HTML to allow as HTML entity
return $sce.trustAsHtml(message.replace(/\s/g, ' '));
}
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="sa">
<input type="text" ng-model="message" />
<input type="range" min="1" max="100" ng-model="size" />
<hr>
<!-- Need to now always use "ng-bind-html" -->
<div style="font-size:{{size}}em;" ng-bind-html="message | allowWhiteSpace"></div>
</div>
&#13;
https://docs.angularjs.org/api/ng/service/ $ SCE
您可以使用指令:
angular.module("sa", []).directive("allowWhiteSpace", function($sce) {
return {
scope: {
value: '=allowWhiteSpace'
},
link: function($scope, element) {
$scope.$watch('value', function(message) {
message = message || '';
return element.html(message.replace(/\s/g, ' '));
});
}
}
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="sa">
<input type="text" ng-model="message" />
<input type="range" min="1" max="100" ng-model="size" />
<hr>
<div style="font-size:{{size}}em;" allow-white-space="message"></div>
</div>
&#13;
与提到的Utopic一样,您也可以使用white-space: pre;
。这将像<pre>
标记一样工作:
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app>
<input type="text" ng-model="message" />
<input type="range" min="1" max="100" ng-model="size" />
<hr>
<div style="font-size:{{size}}em; white-space: pre;">{{message}}</div>
</div>
&#13;
选择是你的: - )