來指導我試圖通過formName.formInput
的指令,這樣的指令模板裏面我可以用ngMessages='passedFormInput.$error'
傳遞表單輸入(而不是整個表格)對象Angularjs
我的目標是創建一個快捷指令爲ngMessages用於泛型表單錯誤。
我有一個plunker:https://plnkr.co/edit/SakHtD2cCqrzwAssclgp
我希望我的指令,只需要<formName>.<inputName>
<form name="form" novalidate>
<div class="form-group">
<label for="userEmail">Email Address </label>
<input ng-model="credentials.email" maxlength="255" required type="email" class="form-control" id="userEmail" placeholder="Email">
</div>
<div rc-messages="form.userEmail"></div>
</form>
我的繼承人指令:
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
$scope.name = 'World';
})
.directive('rcMessages', function() {
return {
require: ['^form', '^rcMessages'],
restrict: 'A', // Must be a attributeon a html tag
template: '<pre><code>formInputError: {{formInputError | json }}</code></pre>' +
'<pre><code>testForm: {{testForm | json }}</code></pre>' +
'<div ng-messages="formInputError.$error">' +
'<span ng-message="required">*</span>' +
'<span ng-message="minlength">Too short.</span>' +
'<span ng-message="maxlength">Too long.</span>' +
'<span ng-message="email">Invalid email address.</span>' +
'</div>meep',
scope: false,
controller: ['$scope', function($scope) {
$scope.formInput = $scope.rcMessages;
console.log('rcMessages', $scope.rcMessages);
console.log('formInputError', $scope.formInputError);
}],
link: function($scope, element, attrs, ctrl) {
$scope.testForm = ctrl;
console.log('ctrl', ctrl);
}
};
});
我能夠得到表單控件通過使用^Form
,但我似乎無法在表單中的特定元素歸零。
------編輯:解決任何正在尋找的人。 -----
我意識到我的錯誤是我沒有給input
添加一個名字。當給定一個名稱輸入對象被添加到FormController
時,我可以通過rc-messages
屬性發送輸入名稱來訪問它。
請參閱我的更新plunker:https://plnkr.co/edit/u14S269MOIDxvFzHP1Jt
我不知道是否會讓這變得更容易,但看起來它將使更多的意義上輸入自己指定的指令。 –
如果是在輸入上,我怎麼能打印標籤中的字符串? – RachelC