2017-02-22 79 views
-1

我學習如何在Angular JS中編寫自定義指令。我做的第一個步驟:如何在指令Angular JS中傳遞一個參數?

.directive("myClass", function(){ 
    return function (scope, element, attributes){ 
      // HERE TO GET PARAMETER AND COMPARE 
    } 
}); 

<div my-class="value"></div> 

我嘗試通過參數value到指令my-class,後switch case檢查這在指令和返回類名。

我怎樣才能得到這個值?

+0

這個ISN」的範圍完整的指令定義。指令通常不會返回一個函數,它們會返回一個包含範圍,模板,控制器等的對象。 – Claies

+0

也許你只是想要一個[filter](https://docs.angularjs.org/guide/filter)。 – isherwood

+0

閱讀指南(https://docs.angularjs.org/guide/directive),然後詢問更具體的問題。 –

回答

2

有多種方法可以將參數傳遞給指令。 請參閱Directive Guide

一種方法是使用指令定義對象中的作用域屬性,以便這些值在鏈接函數中可用。

另一種方法是使用屬性
你的情況,你可以使用屬性來訪問在指令 指定的參數嘗試登錄的屬性,看看有什麼都可以使用。

您可以使用$parse得到的參數值

.directive("myClass", function($parse){ 
    return function (scope, element, attributes){ 
      // HERE TO GET PARAMETER AND COMPARE 
      console.log(attributes); 
      console.log($parse(attributes.myClass)); 
    } 
}); 



<div my-class="value"></div> 
1

返回值錯誤。它應該看起來像這樣:

var module = angular.module('someModule', []); 
module.directive("myClass", function(){ 
    return { 
     restrict: 'A', 
     // other scope options here... 
     link: function ($scope, $el, $attrs) { 
      // $attrs.myClass == 'value' 
     } 
    } 
}); 
+0

來獲得價值如何使用指令,如ng級,它將返回aatribute class =「red」 – Darama

+0

我認爲它應該是'restrict:'C'' – Darama

1

最簡單的辦法值傳遞給指令中分離指令

angular.module("app",[]) 
 
.directive("myClass", function(){ 
 
    return { 
 
      restrict : 'A', 
 
      scope : { 
 
      myValue : '@' 
 
      }, 
 
      link : function (scope, element, attributes){ 
 
       console.log(scope.myValue) 
 
      } 
 
     } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="app" > 
 

 
    <div my-class my-value="value"></div> 
 
</div>

+0

您能評論這一行按照樣式? – Darama

+0

@Darama對不起,我不明白 –

+0

你能解釋每一行嗎? – Darama

相關問題