javascript - 如何将 html 代码与 ng-... 属性绑定(bind)

标签 javascript html angularjs

我想创建<select ng-model='selected' ng-options='stage as stage.name for stage in stages'></select>变量中的元素作为字符串。正如您在此处看到的,select 元素中有 ng-... 属性。如果我使用不带 ng-... 属性的 select 元素,它的显示不会有问题。如果我在其中使用 ng-...,它不会显示任何内容。那么,如何让它显示为 ng-... ?请帮忙。

我的html代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <script src="Scripts/angular.min.js"></script>
    <script src="Scripts/angular-sanitize.js"></script>
    <script src="Scripts/myScripts/index.js"></script>
</head>
<body>
    <div ng-app="myapp" ng-controller="myCtrl">
       <div ng-bind-html="htmlCode">
       </div>
    </div>
</body>
</html>

我的js代码:

var app = angular.module('myapp', ['ngSanitize']);

app.controller('myCtrl', ["$scope", function ($scope) {

    $scope.stages =
        [{ name: "Identification of Discontinuing Factors", value: 1 },
        { name: "Project Level Assessment", value: 2 },
        { name: "Organizational Readiness Assessment", value: 3 }];

    $scope.htmlCode = "<select ng-model='selectedStage' ng-options='stage as stage.name for stage in stages'></select>";
}]);

最佳答案

您需要重新编译 dom 才能使用 ng- 属性。将此指令用作 ng-bind-html 元素的属性。

.directive('dynamic', function ($compile) {
  return {
    restrict: 'A',
    replace: true,
    link: function (scope, ele, attrs) {
      scope.$watch(attrs.dynamic, function(html) {
        ele.html(html);
        $compile(ele.contents())(scope);
      });
    }
  };
});

演示

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

app.controller('myCtrl', ["$scope","$sce", function ($scope,$sce) {

    $scope.stages =
        [{ name: "Identification of Discontinuing Factors", value: 1 },
        { name: "Project Level Assessment", value: 2 },
        { name: "Organizational Readiness Assessment", value: 3 }];

    $scope.htmlCode = "<select ng-model='selectedStage' ng-options='stage as stage.name for stage in stages'></select>";
    
    $scope.trust = function(html){
       return $sce.trustAsHtml(html)
    }
}]);

app.directive('dynamic', function ($compile) {
  return {
    restrict: 'A',
    replace: true,
    link: function (scope, ele, attrs) {
      scope.$watch(attrs.dynamic, function(html) {
        ele.html(html);
        $compile(ele.contents())(scope);
      });
    }
  };
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myapp" ng-controller="myCtrl">
       <div ng-bind-html="trust(htmlCode)" dynamic>
       </div>
       
       {{selectedStage}}
    </div>

关于javascript - 如何将 html 代码与 ng-... 属性绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43888116/

相关文章:

javascript - 从 promise 的 then() 返回一个值?

Angularjs:SyntaxError: JSON.parse 位置 97 处的 JSON 中的意外标记

javascript - Angular 数据表 : Unknown provider

javascript - 是否有必要使用 === 来比较 Javascript 中的字符串或者 == 就足够了?

javascript - 在 jQuery 单击函数上渲染 Rails 部分

Javascript - 将页面保存到本地存储

javascript - 使用 X-Tag 创建自定义子元素的正确方法

html - 在 100% 高度的 div (Bootstrap) 中居中 div(垂直和水平)

html - 应用显示 :flex to a form

javascript - 引用使用 ngRepeat 创建的动态表中的 DOM 元素