2016-09-28 68 views
0

我有一个文本框角色,我想检查角色是否已经存在于数据库或不在服务器端为我已经创建了一个指令uniqueRole现在我想通过文本框值该指令如何做到这一点。如何将模型值传递给自定义指令?

**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; 
        }; 
       } 
      } 
     }); 
    }); 

回答

1

你基本上想知道如何发送数据到你的自定义指令? 如果是这样的情况下,这里有一个例子,在你输入你应该有这样的:

<input unique-role data="customData"> 

哪里customData是你控制器中定义的属性,是负责当前视图。该物业应通过$scope连接到您的控制器。

现在指令内:

scope: { 
    data: '=' 
} 

而且你将不得不通过scopedata指令内的访问。请记住,有三种将数据绑定到指令的方式,这是其中一种方式,您可以阅读更多关于它的信息here

+0

我还是编辑的代码不工作仍然有价值,因为undefined请帮助 –

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}}"> 

控制器的对象添加属性

scope:{ 
sendValue: '=' 
} 

scope.sendValue的指令将绑定到文本值在控制器

+0

'use strict'; 定义([ '角度', './module', ],功能(角,指令){ \t directives.directive( 'uniqueRole',函数($超时,$ Q,restClientTemplate){ 返回{ 限制: 'AE', 要求: 'ngModel', 范围:{ \t sendValue: '=' \t}, 链路:功能(范围,榆树,ATTR,模型){ 模型$ asyncValidators。 usernameExists = function(roledata){\t var defer = $ q.defer(); console.log(“value o f发送范围是:“+ scope.sendValue); \t}像那样仍然获得价值,因为未定义 –

+0

您是否使用指令元素绑定了html中的数据? ''input unique-role send-value =“roledetails.name”ng-model =“roledetails.name”>'像这样 –

+0

是的,我已经完成了 –

相关问题