以编程方式而不是HTML中添加元素中的自定义指令

时间:2017-02-14 10:28:20

标签: javascript angularjs

我想在元素中添加自定义目录,该脚本是从脚本添加的运行时。

例如: <input type="number" my-focus = "focusField" > ,我正在从html添加'my-focus'指令。

我可以从JavaScript添加此指令,因为我的元素是动态添加的,我想在该元素上添加焦点。

1 个答案:

答案 0 :(得分:2)

您可以使用$compile

  

将HTML字符串或DOM编译到模板中并生成模板函数,然后可以将其用于将范围和模板链接在一起。

这是一个例子

$scope.html = $compile('<a ng-click="click()" href="#">Click me</a>')($scope);

(function(angular) {
  'use strict';
  angular.module('myApp', [])
    .controller('Controller', ['$scope','$compile',
      function($scope, $compile) {
        $scope.html = $compile('<a ng-click="click()" href="#">Click me</a>')($scope);

        angular.element(document.querySelector('#x')).append($scope.html);

        $scope.click = function() {
          console.log('Yahoooooooooooo')
        }
      }
    ]);

})(window.angular);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp">
  <div ng-controller="Controller">
    <div id="x">

    </div>
  </div>
</div>