我有一个文本框角色,我想检查角色是否已存在于数据库中,或者是否已存在于服务器端,因为我已经创建了一个指令uniqueRole,现在我想将文本框值传递给该指令,如何做到这一点。 / p>
**HTML**
<input type="text" class="role-textbox" id="rolename" name="rolename" required ng-model="roledetails.name" unique-role send-value="roledetails.name" placeholder="{{::'placeholder.addRole.name'|translate}}">
**Controller**
'use strict';
define([
'angular',
'./module',
], function(angular, directives) {
directives.directive('uniqueRole', function($timeout, $q, restClientTemplate) {
return {
restrict: 'AE',
require: 'ngModel',
scope:{
sendValue: '='
},
link: function(scope, elm, attr, model) {
model.$asyncValidators.usernameExists = function(roledata) {
var defer = $q.defer();
console.log("gng to call controller");
restClientTemplate.execute({
method: 'POST',
url: 'json/check/role',
data: roledata
}).then(function(response) {
roledata = response.results;
defer.resolve(roledata);
}, function(error) {
defer.reject(error);
});
$timeout(function() {
model.$setValidity('usernameExists', false);
defer.resolve;
}, 1000);
return defer.promise;
};
}
}
});
});
答案 0 :(得分:1)
您基本上想知道如何将数据发送到自定义指令? 如果是这种情况,这是一个例子,在你的输入上你应该有:
<input unique-role data="customData">
其中customData
是在您的控制器内定义的属性,负责当前视图。该属性应通过$scope
附加到您的控制器。
现在在指令中:
scope: {
data: '='
}
您可以通过scope
到data
访问指令。请记住,有三种方法可以将数据绑定到指令,这是其中一种方法,您可以阅读更多关于它的信息{。{3}}。
答案 1 :(得分:0)
HTML
<input type="text" class="role-textbox" id="rolename" name="rolename" required unique-role send-value="roledetails.name" ng-model="roledetails.name" placeholder="{{::'placeholder.addRole.name'|translate}}">
Controller在对象中添加属性
scope:{
sendValue: '='
}
指令中的scope.sendValue
将绑定到控制器中的文本值