2016-09-28 70 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

是的,我已經完成了 –

相關問題