javascript-如何访问具有隔离范围的指令attrs?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-如何访问具有隔离范围的指令attrs?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1328字,纯文字阅读大概需要2分钟。
内容图文
![javascript-如何访问具有隔离范围的指令attrs?](/upload/InfoBanner/zyjiaocheng/677/36ac4ca70c824439be70e9be02160747.jpg)
我需要访问指令创建的模型,同时我需要在指令中获取属性.
JS:
module.directive('createControl', function($compile, $timeout){
return {
scope: {
name: '=Name' // Dynamically created ng-model in the directive element
},
link: function(scope, element, attrs){
attrs.$observe('createControl', function(){
attrs.createControl //is empty if scope is an object, otherwise it is passed from html attribute
}
}
HTML:
<div class="control-group" ng-repeat="x in selectedControls">
<div create-control="{{ x }}"></div>
</div>
如果将scope定义为对象,则attrs为空,否则为从html传递的值.
造成这种现象的原因是什么?如何获得对传递的属性和模型的访问?
解决方法:
问题是:create-control需要在父作用域内求值{{x}},但是在声明指令时将作用域设为对象就可以创建隔离作用域.这意味着attrs.createControl无法访问x.因此,它是空的.
一种解决方案:您可以通过几种方法解决此问题,最好的方法是将指令配置为通过属性将scope.createControl接受到其隔离范围中.
工作提琴:http://jsfiddle.net/pvtpenguin/tABt6/
myApp.directive('createControl', function ($compile, $timeout) {
return {
scope: {
name: '@', // Dynamically created ng-model in the directive element
createControl: '@'
},
link: function (scope, element, attrs) {
scope.$watch('createControl', function () {
// the following two statements are equivalent
console.log(attrs.createControl);
console.log(scope.createControl);
})
}
}
})
内容总结
以上是互联网集市为您收集整理的javascript-如何访问具有隔离范围的指令attrs?全部内容,希望文章能够帮你解决javascript-如何访问具有隔离范围的指令attrs?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。