将多个ngModel值传递给一个指令-是否可能
passing multiple ngModel values to a directive - is it possible?
我正在为一个项目编写多阶段表单。表单是如此巨大(100-150个输入…疯狂…)我想把表单分解为多个指令,我可以随意重复使用。
问题-我想在指令中使用ngModel,并将三个不同的输入绑定到父作用域上的对象。。。但我只能将ng模型传递给一个要绑定的对象!
这是我的指令html:指令只是位于一个巨大的表单中,但输入在指令本身内部。。
<prefered-time
ng-model="object"
data="somedata"
>
</prefered-time>
这是我的指令模板:
<div class="col-md-3 no_padding">
today only?
<md-checkbox
ng-model="ngModelone"
aria-label="Checkbox 2"
ng-true-value="'yes'"
ng-false-value="'no'">
</md-checkbox>
</div>
<div class="col-md-3 no_padding">
today only?
<md-checkbox
ng-model="ngModeltwo"
aria-label="Checkbox 2"
ng-true-value="'yes'"
ng-false-value="'no'">
</md-checkbox>
</div>
<div class="col-md-3 no_padding">
today only?
<md-checkbox
ng-model="ngModelthree"
aria-label="Checkbox 2"
ng-true-value="'yes'"
ng-false-value="'no'">
</md-checkbox>
</div>
这是我的指示:
var templateUrl = '/web/views/preferedtime.html' ,
//template = '<div> <input type="input" ng-model="ngModel"> </div>',
controller = ['$scope' , function($scope){
init();
function init(){
}
}];
return {
restrict: 'EA',
require : 'ngModel',
scope: {
ngModel: "=",
},
controller:controller ,
templateUrl:templateUrl
};
};
您可以将对象传递给指令的ng模型,然后在模板中使用该对象的属性,如
angular.module('myApp', [])
.directive('parent', function () {
return {
restrict: 'E',
template: '<input ng-model="ngModel.one" /><input ng-model="ngModel.two" />',
scope: {
ngModel: "="
}
};
})
.controller('ctrlr', function ($scope) {
$scope.obj = {}
});
带有HTML
<div ng-app="myApp">
<div ng-controller="ctrlr">
{{ obj }}
<parent ng-model="obj"></parent>
</div>
</div>
如果您只想呈现几个输入,那么:
<prefered-time modelone="ngModelone" modeltwo="ngModeltwo" modelthree="ngModelthree">
</prefered-time>
指令中:
return {
restrict: 'EA',
scope: {
modelone: "=",
modeltwo: '=',
modelthree: '='
},
controller:controller ,
templateUrl:templateUrl
};
如果这些字段是以某种方式连接的,并且您将有一些高级验证或类似的smth,那么您可以为ng模型使用复合对象。
对于多个Input,您可以传递如下所示的模型数组。
<prefered-time models="[ngModelone,ngModeltwo,ngModelthree]">
</prefered-time>
在指令中只公开一个变量。
return {
restrict: 'EA',
scope: {
models: "=",
},
controller:controller ,
templateUrl:templateUrl
};
相关文章:
- 打开一个模态并将其链接到AngularJS中的指令
- 从html创建一个指令,该指令按类名应用函数
- 指令的模板必须只有一个根元素:With restrict E&替换true
- Angular Datetimepicker:指令'的模板;uib时间选择器'必须只有一个根元素
- 如何在另一个组件中获取指令/组件实例
- 一次显示一个隐藏指令-AngularJS
- 一次显示一个指令AngularJS
- AngularJS中多个指令的一个声明
- 如何使用其他自定义指令中的元素标记作为另一个自定义指令的模板
- 调用另一个自定义指令的角度自定义指令
- 在 Angular 指令中定义一个用于 ng-click 的函数
- AngularJs 从指令中的另一个调用控制器
- ng-repeat始终呈现为指令模板中的最后一个
- 如果指令包含在另一个指令中,我如何在隔离范围内添加双向数据绑定属性
- angularjs在一个元素上有两个指令
- 测试依赖于另一个指令Angularjs的指令
- 测试一个简单的指令
- 如何在angularjs中访问一个指令作用域值到另一个指令
- 创建一个模态指令,并将click事件绑定到angular js中
- 给angular指令一个模型名称以访问它's在父级中的作用域