Javascript 带Select的AngularJS指令
我在使用angular 1.6.5时遇到问题,尝试了所有方法,但没有任何明显的进展 我做了一个指令来实现HTMLJavascript 带Select的AngularJS指令,javascript,angularjs,angularjs-directive,binding,Javascript,Angularjs,Angularjs Directive,Binding,我在使用angular 1.6.5时遇到问题,尝试了所有方法,但没有任何明显的进展 我做了一个指令来实现HTMLSELECT标记,在我尝试在option-value属性中获取整个对象而不是单个值或ID之前,该组件似乎一直工作。 我可以输出选项标记的文本作为对象的属性,也可以通过函数返回字符串 下面是对组件和问题的完整处理。 有3个例子: 第一个似乎工作正常,它打印正确的文本并返回正确的值 第二个:不工作,我想将整个选定对象设置为模型,而不是属性 第三个:不工作,我想将整个选定对象设置为模型,而不
SELECT
标记,在我尝试在option-value
属性中获取整个对象而不是单个值或ID之前,该组件似乎一直工作。
我可以输出选项标记的文本作为对象的属性,也可以通过函数返回字符串
下面是对组件和问题的完整处理。
有3个例子:
angular.module(“myApp”、['customDrop']).controller(“TestController”、['$scope',function($scope){
变量项_选择={
ID:3,
价值:“价值3”
};
$scope.LIST=[{
ID:1,
值:“值1”
},
{
ID:2,
价值:“价值2”
},
所选项目,
];
$scope.OBJ={
乐透1:所选项目,
乐透2:选择的项目,
乐透3:选择的项目
};
$scope.getCompleteValue=函数(obj){
返回obj.ID+“-”+obj.VALUE;
}
}]);
angular.module('customDrop',[])指令('customDrop',function(){
返回{
限制:'E',
范围:{
dropid:“@”,
dropvalue:'&',
列表:“=”,
ngModel:“=”
},
要求:'ngModel',
模板:“”+
“{{getValue(val)}}”+
'',
控制器:[“$scope”、“$parse”、“$timeout”,
函数($scope、$parse、$timeout){
$scope.getId=函数(obj){
返回obj[$scope.dropid];
}
//可以打印文本选项作为父作用域中贯穿函数的权限。
$scope.getValue=函数(obj){
return!angular.isFunction($scope.dropvalue(obj))?
$scope.dropvalue(obj):
$parse($scope.dropvalue(obj))(obj);
}
}
]
}
});代码>
.drop{
宽度:400px;
}
简单文本属性(删除用于返回id的id):(正在工作)
所选值:{OBJ.LOTTO1}
简单文本属性(用于返回对象的放置id):(不工作)
所选值:{{OBJ.LOTTO2}}
函数文本属性:(不工作)
所选值:{OBJ.LOTTO3}
若要将选定的整个对象设置为模型,您必须修改getId()
方法,以便在$scope.dropid
未通过绑定时返回对象(因为此方法用于生成选项的值
)。另外,我建议使用生成选项的列表
元素。请参见下面的代码段:
angular.module(“myApp”、['customDrop']).controller(“TestController”、['$scope',function($scope){
变量项_选择={
ID:3,
价值:“价值3”
};
$scope.LIST=[{
ID:1,
值:“值1”
},
{
ID:2,
价值:“价值2”
},
所选项目,
];
$scope.OBJ={
乐透1:所选项目的ID,
乐透2:选择的项目,
乐透3:选择的项目
};
$scope.getCompleteValue=函数(obj){
返回obj.ID+“-”+obj.VALUE;
}
}]);
角度.module('customDrop',[])。指令('customDrop',函数(){
返回{
限制:'E',
范围:{
dropid:“@”,
dropvalue:'&',
列表:“由于您的问题,这里有很多问题-甚至不包括jquery,更喜欢组件,不使用额外的ngModel,不在模板中使用方法,更喜欢ng选项…最后-根本不要编写这样的组件-这将需要您的年龄才能使其可行。(即,在这个实现中,您不能将validator添加到字段)@Marcx很高兴它帮助了你:)