AngularJS 指令 - 链接函数元素参数在监视函数中不可用
AngularJS directive - link function element param not availble in watch function
我正在尝试做一些非常简单的事情:
我定义了一个指令("A"类型),当 scope 属性更改时需要操作元素。
.JS
app.directive("autoAnimation", function ()
{
return {
restrict: 'A',
scope: {
animateChanged: '=',
maxHeight: '@'//for the first time
},
link: function (scope, element, attrs)
{
var isFirstTime = true;
scope.$watch('animateChanged', function (newVal)
{
console.log(newVal)
//Trying to get the 'element' but it's not available - what can I do to get the ul element and manipulate it?
//why it's not available?
});
}
};
});
.HTML
<body ng-controller="MainCtrl">
<input type="checkbox" ng-model='isChecked' />
<ul auto-animation animate-changed='isChecked'>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
</ul>
</body>
问题是当"animateChanged"被更改时,"元素"(和范围)参数不可用。
这是扑克。
我的问题:
1)为什么不可用?
2)当"animateChanged"被更改时,我该怎么做来操作"ul"元素(声明指令的位置 - 参见HTML)?
编辑
我没有检查示例,在这个示例中它是可用的(我的错,对不起)。
但是在我的项目中它不可用,我无法将示例带到我的情况中......(在我的项目中,UL 使用 ng-repeat动态构建)。知道什么可能导致这种行为吗?
它们可用,只需将手表内部更改为控制台.log(newVal,元素,范围):
console.log(newVal, element, scope)
波兰兹罗提: http://plnkr.co/edit/NZq6G04zsVBg2GgNWZkv?p=preview
当您$watch
链接函数以便 (元素) 可用时,请更改为以下内容:
console.log(element);
实际上console.log(newVal)
正在输出点击元素的状态,所以当checked:true/unchecked:false
.
相关文章:
- 监视函数从服务返回不起作用,但作用域函数起作用
- 从指令链接函数监视控制器作用域
- 有没有一种方法可以让watch函数获取被监视文件的名称
- 角度测试:监视在控制器初始化时执行的函数
- Javascript:监视队列/连续运行函数
- 当承诺在监视函数中解析时,如何使承诺的 then 函数起作用
- 监视由 Jasmine 中的另一个函数调用的函数
- Jasmine:如何在ES6上监视导入的函数/构造函数
- 如何使用 sinon.js 来模拟/监视 javascript 函数中提到的对象
- sinon.js监视$.dataTables函数
- AngularJS 指令 - 链接函数元素参数在监视函数中不可用
- 如何监视接收函数参数的方法
- 通过Ng重复指令监视控制器中函数的输出
- 使用Jasmine监视函数中的变量
- 使用Jasmine监视没有对象的函数
- 如何使用Jasmine监视通过ES6默认导出导入的函数
- 这是监视Jasmine中某个函数的正确方法吗
- 使用Jasmine监视构造函数
- Gon-gem for ruby on rails监视函数监视所有变量
- 如何使此函数监视更改