Javascript AngularJS自定义指令不';t载荷
我用的是角度1.4.x 我正在制作一个自定义指令,检查服务器上的字段是否唯一(该字段称为“jmbg”)。我有以下代码:Javascript AngularJS自定义指令不';t载荷,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我用的是角度1.4.x 我正在制作一个自定义指令,检查服务器上的字段是否唯一(该字段称为“jmbg”)。我有以下代码: (function() { angular .module('app') .directive('uniqueJmbg', uniqueJmbg); uniqueJmbg.$inject = ['$q', '$http']; function uniqueJmbg($q, $http) { restrict: 'A', require: 'ng
(function() {
angular
.module('app')
.directive('uniqueJmbg', uniqueJmbg);
uniqueJmbg.$inject = ['$q', '$http'];
function uniqueJmbg($q, $http) {
restrict: 'A',
require: 'ngModel',
link: function(scope, elem, attrs, ngModelCtrl) {
ngModelCtrl.$asyncValidators.uniqueJmbg = function(modelValue, viewValue) {
var value = modelValue || viewValue;
return $http.get('/server/users/' + value)
.then(function resolved() {
return $q.reject('exists');
}, function rejected() {
return true;
});
};
}
}
})();
我以以下方式使用HTML中的指令:
<input class="form-control" type="text" id="jmbg" name="jmbg" ng-model="rad.radnik.jmbg" ng-model-options="{ updateOn: 'default blur', debounce: {'default':400, 'blur':0 } }" unique-jmbg/>
如果有关系,我将使用controllerAs语法的控制器。
现在,发生的情况是,包含uniqueJmbg定义的文件从未加载(我在浏览器调试器中看不到它)。如果我将代码移动到一个确实加载了应用程序的组件上,那么应用程序将停止工作(并且控制台中没有错误),因此我无法调试它
知道有什么问题吗?我甚至无法在浏览器中访问代码?向模块添加依赖项
angular
.module('app', [])
.directive(...
您需要从模块返回一个对象,因此更正为:
function uniqueJmbg($q, $http) {
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, elem, attrs, ngModelCtrl) {
...
}
};
}
我认为您的第一个更正是错误的,听起来OP在别处定义了
app
模块,在这种情况下,对module
的一个参数调用是正确的。但是,答案的第二部分是准确的。它在别处定义,这就是为什么您需要模块的依赖项(如果有,它可以保持为空数组)。因此,您可以将它们作为angular.module('app.whater.module',['app.whater.dependency']).directive()注入那里。
No否,OP使用module
的单参数版本作为getter。在这种情况下,两个参数的版本是错误的,因为它将尝试用相同的名称重新定义一个新模块。我知道你在说什么,我同意,但我不知道他是否将他的主模块命名为App
,并且他使用的是App
。在我之前的评论中,我只是给出了一个嵌套模块的示例。我简直不敢相信我浪费了一个小时没有意识到我没有返回指令配置对象。这听起来可能有点傻,但是你正在将directive.js文件加载到index.html文件中吗?