首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Angular JS -点击一个按钮,从指令中加载一个模板html

Angular JS -点击一个按钮,从指令中加载一个模板html
EN

Stack Overflow用户
提问于 2015-06-22 01:34:55
回答 2查看 58.6K关注 0票数 22

单击链接时,我正在尝试加载HTML模板。我已经创建了一个包含templateUrl的指令,它加载一个超文本标记语言文件。当单击一个链接时,我调用了一个函数,该链接将带有自定义指令"myCustomer“的div附加到index.html中已有的div中。到目前为止,我所做的一切如下所示,但它不起作用。

index.html

代码语言:javascript
复制
    <!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Example - example-example12-production</title>
  <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.1/angular.min.js"></script>
  <script src="script.js"></script>
</head>
<body ng-app="docsTemplateUrlDirective">
  <div ng-controller="Controller">
  <a href="#" ng-click="showdiv()">show</a>
  <div id="d"></div>
</div>
</body>
</html>

script.js

代码语言:javascript
复制
(function(angular) {
  'use strict';
angular.module('docsTemplateUrlDirective', [])
  .controller('Controller', ['$scope', function($scope) {

    $scope.showdiv = function(){
      $("#d").append("<div my-Customer></div>");
    };
  }])
  .directive('myCustomer', function() {
    return {
      templateUrl: 'my-customer.html'
    };
  });
})(window.angular);

my-customer.html

代码语言:javascript
复制
<p>DIV CONTENT</p>

下面是我测试这段代码的链接here

EN

回答 2

Stack Overflow用户

发布于 2015-06-22 01:49:43

最常见的方法是使用$compile。更多信息:Dynamically add directive in AngularJS

那么你的控制器可能看起来像这样:

代码语言:javascript
复制
angular.module('docsTemplateUrlDirective', [])
  .controller('Controller', ['$scope', '$compile', function($scope, $compile) {

    $scope.showdiv = function(){
        var el = $compile( "<div my-customer></div>" )( $scope );
        $('#d').append( el );
    };
  }]);

请注意,指令调用应该如下所示:<div my-customer>,而不是您在代码中使用的<div my-Customer></div>

票数 1
EN

Stack Overflow用户

发布于 2015-06-22 01:42:55

当您使用append手动执行此操作时,您实际上不会运行$apply或$digest,因此该指令不会运行,您是否可以尝试使用ng-show或ng-if ...e.g

代码语言:javascript
复制
  <body ng-app="docsTemplateUrlDirective">
  <div ng-controller="Controller">
  <a href="#" ng-click="showdiv = true">show</a>
   <div my-customer ng-if="showdiv"></div>
  <div id="d"></div>
</div>
</body>

这样,angular就会运行$apply,指令就会呈现出来。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30967382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档