大佬教程收集整理的这篇文章主要介绍了angularjs – 如何检查是否已向指令提供表达式属性?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
<my-directive callBACk-expression="someFunction()"> </my-directive>
该指令是可重用的,因此我给它一个隔离范围.我想根据是否设置了callBACk-expression属性在指令中显示一个按钮.
App.directive('myDirective',function(){ reStrict: 'E',scope: { callBACkExpression: '&' },template: '<button ng-show="!!callBACkExpression">Fire callBACk</button>' });
具有空白属性的console.log($scope.callBACkExpression)导致:
function (locals) { return parentGet(parentScope,locals); }
if (attributes.callBACkExpression) scope.callBACkButton = true
是否有任何替代品不需要额外的线和&范围财产?
您可以在指令中使用此链接函数而不是使用模板,该函数有条件地添加模板:
link: function (scope,element,attrs) { if (attrs.callBACkExpression) { var html = '<button>Fire callBACk</button>'; element.replaceWith(html); } }
选项1演示:http://jsfiddle.net/ZC4MZ/2/
对于大型模板,您可以使用$templateCache.首先添加模板:
@H_532_7@myApp.run(function($templateCachE) { $templateCache.put('myDirective.html','<button>Fire callBACk</button>'); });
然后有条件地使用它,就像选项1,但使用$templateCache.get():
link: function (scope,attrs) { if (attrs.callBACkExpression) { var html = $templateCache.get('myDirective.html'); element.replaceWith(html); } }
确保将$templateCache注入到您的指令中:
@H_532_7@myApp.directive('myDirective',function ($templateCachE) {
这是使用$templateCache:http://jsfiddle.net/ZC4MZ/3/的演示
仅使用模板的选项:
要使用模板,您需要在范围上使用变量.为此,您可以保留所有内容,只需添加:
link: function(scope,attrs) { scope.callBACkExpression = attrs.callBACkExpression;} }
模板/范围变量演示:http://jsfiddle.net/ZC4MZ/5/
以上是大佬教程为你收集整理的angularjs – 如何检查是否已向指令提供表达式属性?全部内容,希望文章能够帮你解决angularjs – 如何检查是否已向指令提供表达式属性?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。