【发布时间】:2017-02-27 07:05:41
【问题描述】:
app.directive('textForm', function ($compile) {
return {
restrict: 'E',
replace: true,
templateUrl: "textForm.html",
scope: {
label: "@",
model: "=",
type: "@",
name: "@",
},
link: function (scope, element) {
scope.log = function () {
console.log(1);
};
var input = element.find('.form-control');
input.attr({'ng-change': 'log()'});
$compile(element.contents())(scope);
}
}
});
<!-- this is textForm.html -->
<div class="form-group">
<label class="col-xs-3 control-label">{{label}}</label>
<div class="col-xs-7">
<input type="{{type||'text'}}" name="{{name}}" class="form-control" ng-model="model">
</div>
</div>
<!-- this is how I use the directive -->
<text-form label="name" name="name" model="person.name"></text-form>
上面的代码无法运行,但可以说明问题。
出于某种原因,我想动态地将ng-change 添加到input,经过一番搜索,我发现$compile 可以做到这一点。但它似乎不起作用,我不知道为什么。
我的角度版本是 1.5.5
【问题讨论】:
-
您在 HTML 中将
directive引用到哪里? -
这样做的用例是什么?
-
@troy 你要在
ng-change中动态添加什么并基于什么?? -
@georgeawg 实际上我想添加 ng-pattern、ng-max、ng-min 等进行输入验证,但有些输入需要这些,有些则不需要。为了使这个指令更可定制,我需要动态添加一些属性。 ng-change 只是一个例子
-
@troy 看看this answer,我正在向 DOM 添加动态属性..
标签: javascript angularjs