4

我是AngularJS的新手,剛開始使用它前幾天,所以原諒我,如果問題本身是不正確的。AngularJS通過URL在屬性指向孤立範圍 - 意外令牌':'

我遇到的問題是,我想通過屬性傳遞一個URL參數,以我的指令的隔離範圍,但在http://:部分它給了我一個錯誤,說Syntax Error: Token ':' is an unexpected token at column 5 of the expression [http:// ...

指令(在這裏我「呼」的話)的HTML部分是這樣的:

<myDirective datasource="http://url"></myDirective> 

我將其綁定到孤立的範圍是這樣的(?):

scope: { 
    dataSource: '=datasource' 
} 

如果該屬性的值僅包含簡單字符,則可以使用。我該如何解決這個問題?

謝謝。

+1

包裹網址將work' ' – 2015-02-07 20:11:53

+0

u能分享如何建立這個指令 – Siddharth 2016-05-24 13:16:06

回答

4

在你的情況的角度試圖評估值datasource屬性。因爲你提到了=,即變量的雙向綁定。

如果您將URL包裝在'(單引號)內將解決您的問題。因爲所提到的值將直接綁定到指令隔離範圍變量。

標記

<my-directive datasource="'http://url'"></my-directive> 
+0

由於我需要雙向綁定的其他原因,這是我需要的答案。 – 2015-02-07 20:31:47

+0

@MartinFejes很高興爲您效勞。謝謝。:) – 2015-02-07 20:32:36

+0

如果在鏈接中我有範圍變量呢?例如' ' – Alessio 2015-11-27 12:06:33

6

不要在指令中使用'='來代替使用@因爲你傳遞的是正常的字符串。

scope: { 
    dataSource: '@datasource' 
} 
+0

當綁定到一個變量時,真正應該使用'=',而在字符串中使用'@'。其他任何事情都會令人困惑。 – 2015-02-07 20:22:42

+0

因爲我需要其他原因的雙向綁定,所以我接受了另一個答案。但是你說的話非常有用,並且非常感謝你。 :) – 2015-02-07 20:32:56

2

如果你想擁有雙向數據綁定'='你必須有一個範圍變量綁定,或通過加引號的字符串:

<myDirective datasource="'http://url'"></myDirective> 
0

要定義一個分離的範圍,只是把「@」到的範圍定義並在指令中使用屬性附加傷害名。

.directive('ggThumbnail', function() 
{ 
    return { 
     restrict: 'E', 
     scope: { 
      thumbnailSrc: '@', 
      thumbnailWidth: '@', 
      thumbnailHeight: '@' 
     }, 
     link: function(scope, element, attrs, ctrl) 
     { 
      ctrl.init(element); 

      attrs.$observe('thumbnailSrc', function() 
      { 
       if (attrs.thumbnailSrc) 
       { 
        ctrl.prepareImage(); 
       } 
      }); 
     } 
    }; 
}); 
+0

可以分享如何創建此指令 – Siddharth 2016-05-24 13:15:58

1

Angular嘗試將您的值用作變量名稱。

here:「對象散列用於設置父範圍和隔離範圍之間的雙向綁定(使用'=')或單向綁定(使用'@'),還有' &'綁定到父範圍表達式。「

你應該使用:單引號內

scope: { 
    dataSource: '@datasource' 
}