GVKun编程网logo

Angular JS-单击按钮即可从指令加载模板html(angularjs点击事件)

27

对于想了解AngularJS-单击按钮即可从指令加载模板html的读者,本文将是一篇不可错过的文章,我们将详细介绍angularjs点击事件,并且为您提供关于Angular2动态加载模板、angula

对于想了解Angular JS-单击按钮即可从指令加载模板html的读者,本文将是一篇不可错过的文章,我们将详细介绍angularjs点击事件,并且为您提供关于Angular2动态加载模板、angularjs ng-bind-html 指令 对html标签转译、angularjs – Angular Bootstrap后加载模块、angularjs – Angular JS – 将数据从指令发送到父控制器的有价值信息。

本文目录一览:

Angular JS-单击按钮即可从指令加载模板html(angularjs点击事件)

Angular JS-单击按钮即可从指令加载模板html(angularjs点击事件)

单击链接时,我试图加载HTML模板。我已经制定了包含templateUrl加载HTML文件的指令。单击链接时,我将调用带有自定义指令“myCustomer”的div附加到index.html中已存在的div的函数。我到目前为止所做的一切都显示在下面,但这不起作用。

index.html

    <!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

(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

<p>DIV CONTENT</p>

这是我在这里测试此代码的链接

答案1

小编典典

这是因为如果您添加这样的内容,那么angular不会绑定指令,

您需要$compile维修才能执行此操作,这会将指令与您的$scope

所以控制器喜欢

.controller(''Controller'', [''$scope'', ''$compile'', function($scope, $compile)     {    $scope.showdiv = function(){      var compiledeHTML = $compile("<div my-Customer></div>")($scope);      $("#d").append(compiledeHTML);    };}])

这是演示


或者 这样做很好,

用于ng-if创建或删除html中的元素,

试试这个代码

控制器

....$scope.anableCustomerDirective = false;$scope.showdiv = function(){  $scope.anableCustomerDirective = true;};

HTML

<body ng-app="docsTemplateUrlDirective">  <div ng-controller="Controller">      <a href="#" ng-click="showdiv()">show</a>      <div id="d">          <div my-Customer ng-if=''anableCustomerDirective''></div>      </div> </div></body>

建议

如果您的主要目的是在单击后放置html内容,则可以ng-include在此处使用它,它会更清洁,并且不需要其他指令。

<div id="d">            <div ng-include="templateURL"></div> </div> $scope.showdiv = function(){      $scope.templateURL = ''my-customer.html''; };

找到演示

Angular2动态加载模板

Angular2动态加载模板

我开始研究使用Angular2和我遇到的一个我无法找到解决方案的问题.我要求根据我从模型中收到的数据,我希望为给定的组件加载不同的模板.这主要与根据我收到的数据维护不同的布局有关.这可能吗?

谢谢

解决方法

Angular 2支持UI构建的组件组合方法.因此,你不应该最终得到大型模板,如果是这样的话,最好将它们分成一些辅助子组件(即使它们只提供布局).

如果模板不是很大,您可以使用* ngIf指令基于某个组件的属性进行有条件渲染.

解决此问题的另一种方法是在组件级别实现路由,然后在使用router.navigate([‘./ MySubcomponent’])收到数据后以编程方式路由到这些路由

angularjs ng-bind-html 指令 对html标签转译

angularjs ng-bind-html 指令 对html标签转译

文章参考

http://www.tuicool.com/articles/2eIrIz

http://www.runoob.com/angularjs/ng-ng-bind-html.html

在工作中遇到问题:用户在后台添加一篇新闻,在数据库中存储的是HTML代码,从数据库查询出来之后结果把HTML代码显示出来。

解决办法:使用ng-bind-html 指令,能够对HTML代码的标签转译,在浏览器中显示

ng-bind-html 指令会自动过滤掉标签内的样式?

所谓sce即“Strict Contextual Escaping”的缩写。翻译成中文就是“严格的上下文模式”也可以理解为安全绑定吧。

$sce干的事情来看就是将语境中存在的跨站攻击的风险给干掉.

我们返回的内容中包含一系列的html标记,它可以通过使用$sce.trustAsHtml()。该方法将值转换为特权所接受并能安全地使用“ng-bind-html”。所以,我们必须在我们的控制器中引入$sce服务.

代码如下

/** * 公司简介service * */ angular.module("hkApp").factory("companyIntroduceIndexCompanyService",["$http","$sce",function($http,$sce){ return { //获取公司简介 getCompanyIntroduce:function(__scope__){ var url = "/index.PHP/Admin/Page/companyPage.html"; var formData = { id:2 }; $http.post(url,formData) .success(function(response,status,headers,config){ if(response.status == 1){ //__scope__.content = response.data.content; __scope__.content = $sce.trustAsHtml(response.data.content); } }); } } }]);

【1】angular源码分析:angular中入境检察官$sce

【2】野兽的 Angular 学习 - -scesce和sceDelegate

【3】$sce官方手册

angularjs – Angular Bootstrap后加载模块

angularjs – Angular Bootstrap后加载模块

我试图在app bootstrap之后加载并注入一个模块.例如,假设我的初始模块是:

angular.module('mainApp',[]);

后来我意识到用户需要通过secondaryApp提供的所有路由才能打开它们.所以现在我需要我的模块看起来像这样:

angular.module('mainApp',['secondaryApp']);

我成功地lazyLoading secondaryApp js文件,但我无法将其添加到mainApp.我试过将它添加到requires数组,即

var app = angular.module('mainApp');
app.requires[app.requires.length] = 'secondaryApp';

这会将模块名称添加到requires数组,但mainApp仍然无法访问secondaryApp中提供的路由/状态.

有没有人有什么建议?我已经被困在这一段了一段时间了.

谢谢!

解决方法

为了清楚起见,你不能定义angular.module(‘mainApp’,[]);不止一次.

每次声明具有依赖关系的模块时,它都会覆盖先前的声明.

angularjs – Angular JS – 将数据从指令发送到父控制器

angularjs – Angular JS – 将数据从指令发送到父控制器

我有一个应用程序,我使用 ngCart指令,以存储添加到篮子中的项目.问题是该指令只具有发送用户添加的项目信息的功能,但我还需要发送一些我将从表单中获取的信息.

因此,为了在单个对象中发送它,我首先需要将指令中存储的数据提取到我的主范围,然后将其与我从表单中获取的数据合并.

为此,我需要修改ngCart.js指令.我试图提供服务,正如here所建议的那样,但我无法让它发挥作用.我在指令中添加的代码是这样的

.service('ngCartData',['ngCart',function(ngCart){

    return {
        data:ngCart;
    };

 }])

,但是我收到一个错误,说模块’ngCart’不可用!

我对角度服务和工厂都很陌生,所以我不确切地知道在哪里工作.我用我的代码创建了一个plunkr(我尝试使用上面的代码修改ngCart.js文件,但是plunkr显示了该指令而没有任何修改).我只需要能够在范围ngCart中发送存储在指令中的数据,以便我可以在父控制器中监听它(参见plunkr中的checkout部分).

任何帮助将非常感激.谢谢!

你有正确的想法,我很惊讶它不适合你.

我已按以下方式编辑您的应用程序(在script.js中)

app.controller('myCtrl',function($scope,ngCart,myCart) {
     $scope.names = [...];
     ...
     console.log(myCart.cart);
 })
    .factory('myCart',function(ngCart){
        return {
            cart: ngCart.$cart
        };
 })

并记录{shipping:30,taxRate:null,tax:null,items:Array [2]},我认为这就是你所需要的(我记录之前添加了2个项目).

请注意,添加服务是多余的;您可以随时随地访问数据.只需将ngCart注入您的控制器/服务/等.并且可以使用更新的数据.

因此,以下代码是等效的:

app.controller('myCtrl',ngCart) {
       $scope.names = [...];
       ...
       console.log(ngCart.$cart);
    });

获得错误的一个可能原因可能是,在编辑ngCart模块时,您遇到了某种错误(如拼写错误),导致ngCart对角度不可见.

今天的关于Angular JS-单击按钮即可从指令加载模板htmlangularjs点击事件的分享已经结束,谢谢您的关注,如果想了解更多关于Angular2动态加载模板、angularjs ng-bind-html 指令 对html标签转译、angularjs – Angular Bootstrap后加载模块、angularjs – Angular JS – 将数据从指令发送到父控制器的相关知识,请在本站进行查询。

本文标签: