2016-03-04 19 views
2

在來到這裏之前,我查看了很多問題,但找不到解決我的問題的任何問題。所以我就在這裏。在指令中將md對話框中的值綁定到ng模型

我創造了這個指令:

.directive('myDirective', {'$mdDialog', 
    function($mdDialog){ 
    return { 
     restrict: 'E', 
     templateUrl: TEMPLATE_URL, 
     scope: { 
      type: '@', 
      fieldName: '@', 
      ngModel: '=' 
     }, 
     link: function($scope, $element, $attrs){ 
      $scope.close = function(){ 
       $mdDialog.cancel(); 
      } 

      $scope.selectItem= function(item){ 
       $scope.ngModel = item; 
       $mdDialog.hide(); 
      }; 

      $scope.showDialog= function(){ 
       var options = { 
        templateUrl: MODAL_TEMPLATE_URL, 
        scope: $scope, 
        controller: 'MyController' 
       }; 

       $mdDialog.show(options); 
      }; 
     } 
    }; 
}]); 

該指令打開(採用了棱角分明材料)的對話,一切都在它正確地呈現,但有那所謂的「選擇信息」功能,並通過在一個NG-點擊對象(項目)不會保留在ngModel文本字段中。該對象具有「名稱」屬性集。它在文本字段中出現一秒並消失。然後,如果我嘗試再次打開對話框,則ng-click不會再觸發「showDialog」函數。

這裏的指令模板:

<md-input-container class="field-result"> 
    <label>{{fieldName}}</label> 
    <input type="text" ng-model="ngModel.Name" ng-disabled="true"> 
</md-input-container> 
<md-button class="md-icon-button md-raised icon icon-button icon-search" ng-click="showDialog()"></md-button> 

因此,這裏是我想要的東西:對顯示屬性「名稱」的文本字段ngModel的價值,一旦它的設置,並修復用「showDialog」按鈕單擊問題。

在此先感謝!

+0

值得一提的是,當我使用ngDialog(likeastore)時,我對ngModel和按鈕都沒有問題。但是我想使用ngMaterial,因爲它更好看,並且有很多我可以使用的內置指令。 –

回答

2

該指令範圍由$ mdDialog因爲scope: $scope,

您需要添加preserveScope: true,到對話框中的選項改變。看到這個plunker

+0

謝謝,船長!這很簡單。對不起,容易的問題嘿 –

相關問題