AngularJS自定义指令不会加载
我正在使用angular 1.4.x.AngularJS自定义指令不会加载
我做了一个自定义指令,检查天气在服务器上的字段是唯一的(该字段被称为“jmbg”)。我有以下代码:
(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.whatever.module',['app.whatever.dependency'])。directive()' – Davion
否否,OP使用单参数版本'模块“充当吸气剂。在这种情况下,双参数版本*错误*,因为它会尝试重新定义一个具有相同名称的新模块。 –
这可能听起来有点傻,但你装index.html文件中的directive.js文件? –