Javascript 如何在angular js中获取自定义属性的值

Javascript 如何在angular js中获取自定义属性的值,javascript,angularjs,Javascript,Angularjs,我在angular js中创建了一个名为test的自定义属性。当我在ng控制器关键字I.d旁边写入test属性时 然后我可以使用警报($attrs.test)从控制器访问该测试。但是,如果我在ng controller关键字旁边写入自定义属性test,我将无法访问该属性。i、 e 在这种情况下,我在警报($attrs.test) 完整代码 <html> <script src="angular.min.js"></script> <body ng-a

我在angular js中创建了一个名为
test
的自定义属性。当我在ng控制器关键字I.d旁边写入
test
属性时

然后我可以使用
警报($attrs.test)
从控制器访问该
测试。但是,如果我在ng controller关键字旁边写入自定义属性
test
,我将无法访问该属性。i、 e


在这种情况下,我在
警报($attrs.test)

完整代码

<html>
<script src="angular.min.js"></script>
<body ng-app="myApp">

<div ng-controller="kumar" >
 <button ng-click="check()" test="def">Click</button>
</div>

 <script>
 var app = angular.module("myApp", []);
 app.directive("test", function() {
  return {
    //template : "<h1>Hello</h1>"
  };
});

 app.controller("kumar",function($scope,$attrs){
    $scope.check=function(){
      alert(JSON.stringify($attrs.test));   //getting undefined. I 
                      //should get def.
  }
});
</script>

</body>
</html>

点击
var-app=angular.module(“myApp”,[]);
应用指令(“测试”,函数(){
返回{
//模板:“你好”
};
});
应用控制器(“kumar”,函数($scope,$attrs){
$scope.check=函数(){
警报(JSON.stringify($attrs.test));//正在获取未定义的.I
//应该得到def。
}
});
您可以检查:

<html>
<script src="src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js""></script>
<body ng-app="myApp">

<div ng-controller="kumar" >
 <button ng-click="check()" test="def">Click</button>
</div>

 <script>
 var app = angular.module("myApp", []);
 app.directive("test", function() {
  return {
    //template : "<h1>Hello</h1>"
  };
});

 app.controller("kumar",function($scope,$attrs){
    $scope.check=function(){
    var testa=$scope.test;
      alert(JSON.stringify(testa));   //getting undefined. I 
                      //should get def.
  }
});
</script>

</body>
</html>

点击
var-app=angular.module(“myApp”,[]);
应用指令(“测试”,函数(){
返回{
//模板:“你好”
};
});
应用控制器(“kumar”,函数($scope,$attrs){
$scope.check=函数(){
var testa=$scope.test;
警报(JSON.stringify(testa));//未定义。I
//应该得到def。
}
});

更新指令范围并添加限制。为了更好地理解,请参考

如果在ng click中传递$event,即ng click=“check($event)”并可以从$event.target中获取属性,则可以在单击时获取元素

检查小提琴:

JS

app.controller('myCtrl', function($scope) {
   $scope.clickMe = function(evt) {
     console.log(evt.target.getAttribute('test'))
   }
});
HTML

<div ng-controller="myCtrl">
   <div ng-click="clickMe($event)" test="abc">Click on Me</div>
</div>

点击我

该属性仅可由写入ng控制器的div中的test directivebutton的控制器访问。所以我认为button在那个控制器下button在那个控制器中,但指令的属性不是。要允许父级访问此文件,您需要授予父级访问其子级范围的权限。在ScottHunter网站上读到这篇文章,看看我的答案
<div ng-controller="myCtrl">
   <div ng-click="clickMe($event)" test="abc">Click on Me</div>
</div>