AngularJS指令:将属性值直接替换到模板中
AngularJS directives: Substituting attribute values directly into template
我一直在尝试开发一个AngularJS指令,输出一个带标签的表单字段。
我希望能够使用像下面这样的标签:
<simpleTextField bind="user.email" label="Email" name="email"
placeholder="Enter email address"></simpleTextField>
这将产生以下(bootstrap) HTML输出:
<div class="form-group">
<label class="col-sm-2 control-label" for="email">Email</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="email"
ng-model="user.email" placeholder="Enter email address">
</div>
</div>
可以看到,这些属性既包括定义绑定的属性,也包括将值直接替换到模板HTML中的属性。
我希望它被正确封装。换句话说,我不想为了适应这个指令的使用而修改视图的控制器。
我所见过的例子都不能满足我的要求,因为(1)它们没有直接将属性值替换到模板中,和/或(2)它们依赖于视图的控制器,其中指令被用来修改。
请注意,我是AngularJS的新手,所以我可能在这里完全偏离了轨道。
我想我已经做了一些应该工作的东西。你可以传入值直接绑定到模板,而指令不知道父模块的模型。HTML +指令:
<div ng-controller="MyCtrl">
<label>Parent Scope Email:{{email}}</label></br>
<simple-text-field simple-bind-to="email" simple-label="Email" simple-name="email"
simple-placeholder="Enter email address" simple-dynamic-scope="user.email">
</simple-text-field>
</div>
指令:
var myApp = angular.module('myApp',[]);
myApp.directive('simpleTextField', function() {
return {
restrict: 'E',
scope: {
simpleBindTo: "=",
simpleLabel: "@simpleLabel",
simpleName: "@simpleName",
simplePlaceholder: "@simplePlaceholder",
},
template: '<div class="form-group">' +
' <label class="col-sm-2 control-label" for="{{simpleName}}">{{simpleLabel}}</label>' +
' <div class="col-sm-10">' +
' <input type="text" class="form-control" name="{{simpleName}}" ' +
' placeholder="{{simplePlaceholder}}" ng-model="simpleBindTo" >' +
' </div>' +
'</div>'
};
});
myApp.controller('MyCtrl', function ($scope) {
$scope.email = '';
});
通过使用'='访问修饰符,ng-model可以被赋值为父作用域的变量成员,而无需指令知道该变量的任何信息。
下面是上面例子的示例:
相关文章:
- 指令的模板必须只有一个根元素:With restrict E&替换true
- 无法用tr替换表中的指令
- 当指令模板的各个部分存在各自的交叉内容时,替换它们
- AngularJS指令模板ng重复有趣的替换
- AngularJS SVG 指令,不推荐使用替换
- 如何实现 Angular 指令来替换元素,但仅限于某些情况
- 替换指令中的值而不替换整个指令
- 为什么将 ng-select 替换为自定义指令会导致$http请求不会每隔一段时间发送一次
- 正则表达式在指令中替换为 html 标记
- 控制 AngularJS 如何替换 ngInclude 或自定义指令
- 如何使用带有替换的模板覆盖/补充指令中的ng类:true
- 为什么“替换:真”在 AngularJS 指令中被弃用
- 用于替换用户输入中的字符的角度指令
- 如何替换Angular指令中不推荐使用的替换属性
- 替换“;templateUrl”:路径带有“;模板”:使用gump的角度指令的内容
- 用于替换文本的 Angularjs 指令
- 在指令's链接中替换angular元素html
- 如何让angular指令包含&替换另一个指令
- AngularJS指令:将属性值直接替换到模板中
- SVG的角度替换指令(结果在DOM中,但未显示)