我正在尝试围绕输入元素构建一个指令,该指令在模型被弄脏或触摸时做出响应。所需的 ngModel 似乎反映了输入模型的值和视图的变化,但没有其他属性。
我怀疑这与我在两个元素中包含 ng-model 的事实有关,但我还没有弄清楚如何只使用它一次。
理想情况下,我想要这样创建的东西:
<input test-directive label="'My Label'" type="text" ng-model="testObject.text"/>
结果如下:
<label>
<div>My Label</div>
<input ng-model="testObject.text" ng-blur="input.focus=false" ng-focus="input.focus=true"/>
Focused: true (input.focus)
Pristine: false (ngModel.$pristine)
</label>
这是我到目前为止所拥有的:小提琴
<div test-directive ng-model="testObject.text" l="'Test Input'" f="testObject.focus">
<input type="text" ng-model="testObject.text" ng-blur="testObject.focus=false" ng-focus="testObject.focus=true" />
</div>
该指令监视 ngModel。
app.directive('testDirective', ['$compile',
function ($compile) {
'use strict';
return {
restrict: 'A',
require: "ngModel",
scope: {
l: '=',
f: '='
},
link: function (scope, element, attr, ngModel) {
var input = element.find('input');
scope.$watch(function () {
return ngModel;
}, function (modelView) {
scope.modelView = modelView
});
},
template:
'<div>' +
'<label>' +
'{{l}}' +
'<div class="iwc-input" ng-transclude></div>' +
'</label>' +
'focus: {{f}}' +
'<pre>{{modelView|json}}</pre>' +
'</div>',
transclude: true,
replace: false
};
}]);