webdad3
webdad3

Reputation: 9080

javascript newline character in AngularJS

I want to print out some dynamic text to my div called sqlOutput. I want it to be formatted with newline characters. I've tried (obviously <br> and /\r\n). But it didn't work.

How can I have a well formatted text using Angular?

$scope.buildScripts = function () {
    var mainTable = "DROP TABLE [dbo].[" + $scope.tableName + "] <br>"
        + "GO <br>"
        + "SET ANSI_NULLS ON <br>"
        + "GO <br>"
        + "SET QUOTED_IDENTIFIER ON <br>"
        + "GO <br>"
        + "SET ANSI_PADDING ON <br>"
        + "GO <br>"
        + "CREATE TABLE [dbo].[" + $scope.tableName + "](";

    $scope.sqlOutput = mainTable;
}

Upvotes: 0

Views: 93

Answers (1)

AlainIb
AlainIb

Reputation: 4708

working example : http://plnkr.co/edit/WgLHP7DzeP9iH9YzNTqY?p=preview

If you want to display in the view some html code from a variable you have to create a filter. this filter will authorise interpreted html code. by default this feature is disabled to prevent security issues. (more reading her and her )

1) create a filter :

// Declare the main module
var myApp = angular.module('myApp', []);

angular.module('myApp').filter('unsafe', function ($sce) {
   return function (val) {
      if( (typeof val == 'string' || val instanceof String) ) {
         return $sce.trustAsHtml(val);
      }
   };
});


myApp.controller('Ctrl1', ['$scope',  function($scope) {
    $scope.tableName = "userXXX" ;
    $scope.buildScripts = function () {
        var mainTable = "DROP TABLE [dbo].[" + $scope.tableName + "] <br>"
            + "GO <br>"
            + "SET ANSI_NULLS ON <br>"
            + "GO <br>"
            + "SET QUOTED_IDENTIFIER ON <br>"
            + "GO <br>"
            + "SET ANSI_PADDING ON <br>"
            + "GO <br>"
            + "CREATE TABLE [dbo].[" + $scope.tableName + "](";

        $scope.sqlOutput = mainTable;
    } 
    $scope.buildScripts();
}]);

2) use the filter in the view :

<span ng-bind-html="sqlOutput  | unsafe "></span>

Upvotes: 1

Related Questions