2016-05-03 141 views
1

我完全初學者使用AngularJS1AngularJS指令獲取templateUrl不工作

我做了什麼,現在是創建自己的自定義指令,用下面的代碼:

var ui = angular.module('ui',[ 'core' ]); 

ui.directive('shTag', function(){ 
    return { 
     restrict: 'E', 
     scope: { 
      text: '=', 
     }, 
     link: function(scope, element, attrs){ 
      scope.type = attrs.type; 
     }, 
     templateUrl: config.base_url + "/directive/tag", 
    } 
}); 

正如你可以看到templateUrl被提取到我的後端,它只是返回html作爲響應。

這是請求的響應:

<span class="" > [[ scope.text ]]</span> 

然而,當它並沒有顯示scope.text值。

注意我用[[]]作爲插補器。

任何幫助將不勝感激。

感謝。

+2

使用[文字]代替 – Walfrat

+2

我不熟悉的「插值」,但在視圖中顯示範圍數據的基本方式是「{{text}}」 – AlainIb

回答

1

由於您沒有使用controllerAs: 'scope'語法,所以您不必使用scope.text,只需使用[[ text ]]即可。

$ scope上的所有內容都可以在您的指令中使用。

(加:看看在角1.5組件,這些組件添加一些語法糖,是相當性感的工作)

0

確保在獲取模板之前正確配置插值。 (在引導過程中,在應用程序的其餘部分運行之前!) 剛開始時,我建議您堅持默認設置,直到您熟悉概念以及如何調試問題。

1

假設你有你的$ interpolateProvider正確配置,以使[[ ]]正常工作,使用[[text]]作爲Alainlb提到的,並確保您有屬性值「文本」設置的所有標籤的使用,像這樣:

<sh-tag text="'display me to the world'"></sh-tag> 

因爲您正在使用隔離範圍,所以text將具有值的唯一方法是如果您爲該屬性分配一個值。注意我在這裏使用了一個字符串,但是這可能是父範圍的變量。

我還建議您在檢查器中檢查您的網絡,以確保該請求正在經過(url是100%正確的)templateUrl。

除此之外,一切看起來都不錯。