如何在 AngularJS 中使用 jqLit​​e 的方法

How can I use methods of jqLite in AngularJS

如何在AngularJS中使用qjLite的方法?我想添加 'p' html 元素,然后添加 class="red" .

也许我哪里做错了...

这里是我写的代码:

angular.module('app', [])
 .controller('ctrl', function($scope){
 $scope.text = 'Test';
 });

 var span = angular.element('<span> </span>');

 span.append('<p>Run it</p>');
 span.addClass('red');
 .red{
 color: red;
 font-size: 60px;
 }
<!DOCTYPE html>
<html ng-app="app">
<head lang="en">
 <meta charset="UTF-8">
 <title></title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.22/angular.min.js"></script>
</head>
<body ng-controller="ctrl">
<p ng-bind="text"></p>
<span></span>
</body>
</html>

如果您想使用 jQlite 方法,您应该将 html 包装在 angular.element() 中。在我们的示例中,一切正常。但是你应该将你的 span 元素附加到你页面上任何现有的 html 标签中。例如: var myDiv = angular.element(document.getElementById("mydiv")) var span = angular.element(' ') span.append('

运行它

'); span.addClass('red');
myDiv.append(跨度)

创建指令以使用 DOM 元素,然后使用 jqLit​​e 方法。 jQlite 类似于 jQuery 但在 Angular Create 指令中使用它们,其中元素是可访问的

试试下面

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

 myApp.controller('ctrl', function($scope){
 $scope.text = 'Test';
   
 });
myApp.directive('addElement', function() {
    return {
        restrict: 'EA',
        replace: false,
        link: function(scope, element) {
             element.html('<p>Run it</p>');
 element.addClass('red');
        }
    }
});
.red{
 color: red;
 font-size: 60px;
 }
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.min.js"></script>

<body ng-app="myApp" ng-controller="ctrl">
<p ng-bind="text"></p>
<span add-element></span>

你做的几乎都不错,除了: 使用 jqLit​​e 时,selector 的使用非常有限。正如文档所说

... only use tag name selectors and manually traverse the DOM using the APIs provided by jqLite.

例如,请参见代码段。

然后,当您使用此命令时 var span = angular.element('<span> </span>'); 您创建了一个新的 span 元素,并且在您的代码片段中,这个新的 span 元素不会以任何方式附加到 DOM 树。 如果您的意图是使用在 html 片段中看到的已经存在的 span 元素,那么您不应该创建一个新元素,而是 select 现有元素,然后对其进行操作。

另一个观察,虽然不是强制性的,DOM 操作应该在控制器内部完成,或者最好为此创建一个新指令。通过这种方式,您可以确保文档也可以作为您的控制器数据进行操作。

angular.module('app', [])
    .controller('ctrl', function($scope){
        $scope.text = 'Test';

        var span = angular.element(document).find('body').find('span');
        span.append('<p>Run it</p>');
        span.addClass('red');
        
});
        

 
 .red{
 color: red;
 font-size: 60px;
 }
<!DOCTYPE html>
<html ng-app="app">
<head lang="en">
 <meta charset="UTF-8">
 <title></title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.22/angular.min.js"></script>
</head>
<body ng-controller="ctrl">
<p ng-bind="text"></p>
<span></span>
</body>
</html>