在本文中,您将会了解到关于angularjs–在angular指令中放置辅助函数的位置?的新资讯,同时我们还将为您解释angular内置指令的相关在本文中,我们将带你探索angularjs–在angu
在本文中,您将会了解到关于angularjs – 在angular指令中放置辅助函数的位置?的新资讯,同时我们还将为您解释angular内置指令的相关在本文中,我们将带你探索angularjs – 在angular指令中放置辅助函数的位置?的奥秘,分析angular内置指令的特点,并给出一些关于angularjs – $location.path在Angular指令中不起作用、angularjs – Angular指令 – 当另一个指令也作为隔离范围时更新父范围、angularjs – Angular指令,属性更新时不调用的链接、angularjs – Angular指令compile()函数如何访问隔离范围?的实用技巧。
本文目录一览:- angularjs – 在angular指令中放置辅助函数的位置?(angular内置指令)
- angularjs – $location.path在Angular指令中不起作用
- angularjs – Angular指令 – 当另一个指令也作为隔离范围时更新父范围
- angularjs – Angular指令,属性更新时不调用的链接
- angularjs – Angular指令compile()函数如何访问隔离范围?
angularjs – 在angular指令中放置辅助函数的位置?(angular内置指令)
angular.module("foo").directive('bar',function(){ return { ... template: '<div> \ <div ng-hide="param1.length == 0 && param2...">...</div> \ <input ng-show="param1.length == 0 && param2..." .../> \ </div>',scope: { param1: '=',param2: '=' } }; });
但是模板中有一个复制的复杂逻辑,所以我想把它提取到一个函数中,然后从模板中调用该函数.我在哪里可以放这样的功能,我该如何调用它?我是否必须创建专用控制器?
解决方法
return { ...,template: '<div><div ng-hide="foo()">...</div></div>',link: function(scope) { scope.foo = function() { return scope.param1.length == 0 && ...; }; } };
angularjs – $location.path在Angular指令中不起作用
这是我的指令的HTML:
<div detail-link="/comments?post={{post.postId}}" ng-click="clickDetailLink()"></div>
这是指令的定义(在CoffeeScript中):
directives.directive 'detailLink',['$location',($location) -> return (scope,element,attrs) -> scope.clickDetailLink = -> console.log "loading " + scope.detailLinkHref $location.path scope.detailLinkHref attrs.$observe 'detailLink',(value) -> console.log "set detail link to " + value scope.detailLinkHref = value ]
我知道这里发生了什么……我的$routeProvider设置为处理/注释但在这里我试图将一个查询字符串附加到路由.如果我使用常规< a href =“#/ comments?post = {{post.postId}}”>,这样可以正常工作,但不知何故通过$location.path设置相同的路由是行不通的.这与代码是否在控制器或指令中无关.
angularjs – Angular指令 – 当另一个指令也作为隔离范围时更新父范围
angular.module('app').directive('googlePlace',function () { return { restrict: 'A',require: 'ngModel',link: function ($scope,element,attributes,model) { $scope.property1 = 'some val'; $scope.property2 = 'another val'; $scope.$apply(); }; });
但在我的控制器中我这样做:
MyCtrl = function($scope){ $scope.doSave = function(){ // do some logic console.log($scope.property1); console.log($scope.property2); }
}
当doSave运行时,我在控制台中得到未定义的值.如何在不隔离范围的情况下将其应用于父节点范围.我没有此选项,因为同一元素上的另一个指令隔离了作用域.
例如
angular.module('app').directive('googlePlace',scope: { property1: '=',property2: '=' } link: function ($scope,model) { //here you have access to property 1 and 2 }; }); function MyCtrl($scope) { $scope.property1 = null; $scope.property2 = null; $scope.doSave = function(){ // do some logic console.log($scope.property1); console.log($scope.property2); } }
还有你的HTML
<div ng-control="MyCtrl"> <div google-place property1='property1' property2='property2'></div> </div>
angularjs – Angular指令,属性更新时不调用的链接
我有2个指令,showCard一个在ng-repeat中,链接函数在属性更新时被调用. (见控制台)
另一个showCards正常工作,但更新属性时不调用链接函数,但在开头只调用一次.
我想了解这两种之间的区别.
如果你想在每次更换卡片时触发某些功能,你可以在showCards链接功能的示波器上添加$watch功能,如下所示:
$scope.$watch('cards',function(){ console.log('multi',$scope.cards); },true);
angularjs – Angular指令compile()函数如何访问隔离范围?
angular.module("example_module",[]) .directive("mydirective",function() { return { scope: { data: "@mydirective" } compile: function(element) { element.html('{{example}}'); return function($scope) { $scope.example = $scope.data + "!"; }; } }; });
和以下HTML代码:
<!DOCTYPE html> <html ng-app="example_module"> <head> <Meta charset="utf-8"> <title>Example title</title> <script src="lib/angular/angular.min.js"></script> <script src="js/example.js"></script> </head> <body> <div mydirective="Hello world"></div> </body> </html>
我希望该指令编译为Hello world!,但它编译为空字符串.范围创建了一个孤立的范围,似乎无法达到{{example}}.
我想知道compile()创建的新HTML代码如何访问链接函数$scope.
解决方法
<div>{{example}}<div>
您可以通过将’$scope.example =’替换为’$scope.$parent.example =’进行验证(仅用于演示目的 – 使用$parent不是最佳做法).
你真正想要做的是类似于翻译,但有更简单的方法来做到这一点.例如:
angular.module("example_module",function() { return { restrict: 'A',scope: { data: "@mydirective" },template: '{{example}}',compile: function(element) { return function($scope) { console.log($scope.data); $scope.example = $scope.data + "!"; console.log($scope.example); }; } }; });
当您使用模板时,它将替换应用该指令的元素的内容(除非您使用replace:true,在这种情况下它将替换整个元素),并且将根据指令范围评估模板的内容.
您可以使用传递给compile(see the docs)的transclude参数来执行您要执行的操作,但这已被弃用,因此我不建议沿着这条路前进.
Here’s a Plunk你可以玩一些变化.
今天关于angularjs – 在angular指令中放置辅助函数的位置?和angular内置指令的介绍到此结束,谢谢您的阅读,有关angularjs – $location.path在Angular指令中不起作用、angularjs – Angular指令 – 当另一个指令也作为隔离范围时更新父范围、angularjs – Angular指令,属性更新时不调用的链接、angularjs – Angular指令compile()函数如何访问隔离范围?等更多相关知识的信息可以在本站进行查询。
本文标签: