AngularJs 双向数据绑定不适用于自定义指令输入元素
AngularJs two-way-data-binding not working for custome directive input elements
我创建了 custome 指令,用于基于后端数据创建动态表单元素。我已经创建了指令和模板。请在下面找到我的指令,模板和json字符串
angular.module('publicApp').directive('buildInput', function() {
return {
require: "ngModel",
restrict:"E",
scope:{
build:"=",
},
templateUrl:"views/directives/buildInput.html",
}
});
我的模板是
<label>{{build.reg_label}}
<span class="color-red">*</span>
</label>
<div ng-if="build.reg_type=='text'">
<input class="form-control" type="text" required="true" ng-model="buildData[build.id]">
</div>
<div ng-if="build.reg_type=='select'">
<select ng-options="reg_option.value as reg_option.label for reg_option in build.reg_options" ng-model="buildData[build.id]">
<option value="" ng-show="$first">-- {{build.reg_label}} --</option>
</select>
</div
>
查看文件是
<div class="form-group" ng-repeat="build in builds">
<build-input build="build" ></build-input>
</div>
我的 json 字符串是
[
{
"id":"1",
"reg_label":"What is Your Name",
"reg_type":"text",
},
{
"id":"2",
"reg_label":"Select Gender",
"reg_options":[
{
"label":"Male",
"value":"M"
},
{
"label":"Female",
"value":"F"
}
],
"reg_type":"select",
}
]
为什么我的模态不与范围变量构建数据绑定?
你的指令只知道build
变量,因为你的(隔离的)作用域是这样定义的:
scope:{
build:"=",
},
听起来您的buildData
变量是在定义builds
的控制器上定义的,因此您应该扩展范围以如下所示:
scope:{
build:"=",
buildData:"="
},
和你的 HTML 指令声明:
<build-input build="build" build-data="buildData" ></build-input>
相关文章:
- 如何在自定义指令中获取计算的属性
- 向动态生成的DOM添加Angular自定义指令
- 自定义指令中的AngularJS ng模型
- 如何在html中以角度显示自定义指令的作用域
- 自定义指令模板中的AngularJS控制变量
- AngularJS通过自定义指令传递点击的项目
- 如何在angularjs中将多个作用域变量传递到自定义指令中
- 处理角度自定义指令中的onReady事件
- 为什么ng中的自定义指令在循环完成后重复运行
- 对于使用传递的数据计算的局部范围变量,角度绑定在自定义指令中不起作用
- Angular.JS自定义指令;不起作用
- 如何通过Angular中的$resource发送来自自定义指令的输入值
- AngularJS:如何访问自定义指令中的input[date]min属性
- AngularJS:ngRepeat作用域在具有隔离作用域和ngTransclude的自定义指令中失败
- 如何使用其他自定义指令中的元素标记作为另一个自定义指令的模板
- 如何限制自定义指令的可能属性值
- 动态网格作为自定义指令
- AngularJS - 在自定义指令中继承ngModel
- 调用另一个自定义指令的角度自定义指令
- 在 AngularJs 中验证自定义指令(我想让它成为必需的)