Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.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 使用控制器作为访问属性指令值_Javascript_Angularjs - Fatal编程技术网

Javascript 使用控制器作为访问属性指令值

Javascript 使用控制器作为访问属性指令值,javascript,angularjs,Javascript,Angularjs,我知道在没有控制器的情况下如何操作,因为: html 假设我有一个名为ngUpperCase的指令(true或false) 如果我用的是这样的东西,怎么做指令 <div ng-controller="myControl as ctl" > <input type="text" ng-upper-case="ctl.isGiant" > </div> 由于不太清楚您想要实现什么,下面是一个我理解您需要的示例:根据变量将输入值更改为大写或小写: 函数ngUp

我知道在没有控制器的情况下如何操作,因为:

html
假设我有一个名为
ngUpperCase的指令(true或false)

如果我用的是这样的东西,怎么做指令

<div ng-controller="myControl as ctl" >
 <input type="text" ng-upper-case="ctl.isGiant" >
</div>

由于不太清楚您想要实现什么,下面是一个我理解您需要的示例:根据变量将输入值更改为大写或小写:

函数ngUpperCase(){
返回{
限制:'A',
优先级:0,
链接:函数($scope,element,attr){
//---检索值
var val=$scope[attr.ngUpperCase];
var anotherVal=$scope.$eval(attr.ngUpperCase);
$scope.$watch(attr.ngUpperCase,function(val){
if(val){
元素[0]。值=元素[0]。值。toUpperCase();
}否则{
元素[0]。值=元素[0]。值。toLowerCase();
}
})
}
}
}
函数myController(){
this.isGiant=true;
}
角度模块('myApp',[]);
有棱角的
.module('myApp')
.controller('myController',myController)
.指令(“ngUpperCase”,ngUpperCase)



由于不太清楚您想要实现什么,下面是一个我理解您需要的示例:根据变量将输入值更改为大写或小写:

函数ngUpperCase(){
返回{
限制:'A',
优先级:0,
链接:函数($scope,element,attr){
//---检索值
var val=$scope[attr.ngUpperCase];
var anotherVal=$scope.$eval(attr.ngUpperCase);
$scope.$watch(attr.ngUpperCase,function(val){
if(val){
元素[0]。值=元素[0]。值。toUpperCase();
}否则{
元素[0]。值=元素[0]。值。toLowerCase();
}
})
}
}
}
函数myController(){
this.isGiant=true;
}
角度模块('myApp',[]);
有棱角的
.module('myApp')
.controller('myController',myController)
.指令(“ngUpperCase”,ngUpperCase)



你所拥有的应该有用。您遇到了什么问题?当使用“controller as”共享您的控制器代码时,它总是返回undefined,您是如何定义控制器的?相反,您可以直接将指令中的范围变量作为属性传递。您对val和另一个val不做任何操作,什么不起作用?是否要基于布尔值将输入值更改为大写?在控制器中,应将“isGaint”定义为
this.isGaint
而不是
$scope.isGaint
您所拥有的应该可以工作。您遇到了什么问题?当使用“controller as”共享您的控制器代码时,它总是返回undefined,您是如何定义控制器的?相反,您可以直接将指令中的范围变量作为属性传递。您对val和另一个val不做任何操作,什么不起作用?是否要基于布尔值将输入值更改为大写?在控制器中,应将“isGaint”定义为
this.isGaint
,而不是
$scope.isGaint
myApp.directive('ngUpperCase',function(){
  return{
     restrict:'A',
     priority:0,
     link:function($scope,element,attr){
         //---to retrieve value
         var val = $scope[attr.ngUpperCase];
         var anotherVal = $scope.$eval(attr.ngUpperCase);
         $scope.$watch(attr.ngUpperCase,function(val){
            //---to watch
         })
     }
  };
})
<div ng-controller="myControl as ctl" >
 <input type="text" ng-upper-case="ctl.isGiant" >
</div>