Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS-设置控制器';访问DOM的自定义指令中的s$scope变量_Javascript_Angularjs_Angularjs Directive - Fatal编程技术网

Javascript AngularJS-设置控制器';访问DOM的自定义指令中的s$scope变量

Javascript AngularJS-设置控制器';访问DOM的自定义指令中的s$scope变量,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我刚才回答了一个问题 他的密码是这样的 <div ng-controller="IndexController"> <label id="number" >5</label> <input type="button" ng-click="getUserDetails()" > </div> 我知道在指令的link函数中,您将范围、元素和属性作为参数传递。在这一行中,我试图将范围变量设置为标签的值 scope.value =

我刚才回答了一个问题

他的密码是这样的

<div ng-controller="IndexController">
  <label id="number" >5</label>
  <input type="button" ng-click="getUserDetails()" >
</div>
我知道在指令的
link
函数中,您将范围、元素和属性作为参数传递。在这一行中,我试图将范围变量设置为标签的值

scope.value = elem.prev().text();
但我怀疑我做得不对。既然指令是前进的方向,我该怎么做呢

我还检查了这个作为参考


我已经阅读了指令内部的
控制器
函数,但是我需要
链接
函数从DOM获取值。

不需要自定义指令<代码>ng单击可以工作:

$scope.getUserDetails = function(e){
   $scope.value = e.target.previousElementSibling.innerHTML;
}
HTML

<div ng-controller="IndexController">
  <label id="number" >5</label>
  <input type="button" ng-click="getUserDetails($event)" >
</div>

5.

不需要自定义指令<代码>ng单击可以工作:

$scope.getUserDetails = function(e){
   $scope.value = e.target.previousElementSibling.innerHTML;
}
HTML

<div ng-controller="IndexController">
  <label id="number" >5</label>
  <input type="button" ng-click="getUserDetails($event)" >
</div>

5.

然而,从我所读到的内容来看,任何涉及DOM的事情都必须在自定义指令中完成。IMO的自定义指令不会给你带来太多好处。如果
标签是自定义指令的一部分,是的,你是在将DOM的一部分封装在指令中。但是,从我所读到的内容来看,任何涉及DOM的操作都必须在自定义指令中进行,在IMO中,您不会从自定义指令中获得太多好处。如果
标签
是自定义指令的一部分,那么您是在指令中封装DOM的一部分。将DOM操作限制为指令的主要原因是封装angular无法响应的更改。独自读取值并不是angular需要响应的事情。除此之外,原始问题中的核心问题可能可以通过在DOM创建时提供价值来主动解决,而不是在以后被动地尝试预测价值。我在这个问题上也提出了类似的建议,“将DOM操作限制为指令”的主要原因是封装angular无法响应的更改。独自读取值并不是angular需要响应的事情。除此之外,原始问题中的核心问题可能可以通过在DOM创建时提供价值来主动解决,而不是在以后被动地尝试预测价值。我在那个问题上也提出了类似的建议。