当我将$state / $stateParams注入指令时,它们在unique函数中不可用,为什么?
'use strict'; angular.module('TGB').directive('uniqueSchoolclassnumberValidator',function (schoolclassCodeService) { return { restrict: 'A',require: 'ngModel',link: function (scope,element,attrs,ngModel) { ngModel.$asyncValidators.unique = function (schoolclassNumer) { var schoolyearId = 1; // Read schoolyearId from the $stateParams.id but how to inject? return schoolclassCodeService.exists(schoolyearId,schoolclassNumber); }; } }; });
UPDATE
正如您在我的谷歌Chrome控制台中看到的那样$stateParams或$state未定义!
您将需要一个Controller作为指令的一部分,其中可以注入$stateParams.沿着这些方向的东西应该工作(未经测试)
(function (){ angular .module('TGB') .directive('uniqueSchoolclassnumberValidator',schoolclassDirective); schoolclassDirective.$inject = ['$state','$stateParams','$compile','schoolclassCodeService']; function schoolclassDirective($state,$stateParams,$compile,schoolclassCodeService) { var directive = { restrict: 'A',controller : MyController link: function (scope,listofCtrls) { // you will need to get the ngModelCtrl from the list of controllers as you have the require field set above var ngModelCtrl = listofCtrls[0]//[1]; var myCtrl = listofCtrls[1]//[0]; ngModelCtrl.$asyncValidators.unique = function (schoolclassNumer) { var schoolyearId = myCtrl.id; return schoolclassCodeService.exists(schoolyearId,schoolclassNumber); }; }; }; function MyController($state,$stateParams){ var scope = this; scope.id= $stateParams.schoolyearId; } return directive; }}
如果它是父状态的一部分,获得1which的另一种方法是定义解决方案function of the parent state并在控制器内使用它.
原文地址:https://www.jb51.cc/angularjs/141842.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。