2014-10-26 65 views
2

我有創建一個自動完成輸入如何將對象引用傳遞給Angular JS中的內部指令?

angular.module('autocomplete', []) 
    .directive('autocomplete', function (...) { 
     return { 
      restrict: 'E', 
      scope: { 
       "id": "@id", 
       "selectedObject": "=selectedobject", 
       "baseSearchUrl" : "@basesearchurl" 
      }, 
      templateUrl: "..." 
      link: function(...){...} 
     } 
    } 

使用的一個例子的指令:

<autocomplete 
    id="favoriteMovie" 
    selectedobject='favMovie' 
    searchUrl='/rest/movies?search=' /> 

它的偉大工程。現在,我要的是創造一個新的,更具體的,指令,創建電影自動完成,這樣我就可以這樣使用它:

<autocompleteMovie 
    id="favoriteMovie" 
    selectedmovie='favMovie'/> 

新指令如下:

angular.module('autocompletemovie', []) 
.directive(
    'autocompletemovie', 
    function() { 
     return { 
      restrict : 'E', 
      scope : { 
       "id" : "@", 
       "selectedMovie" : "=selectedmovie" 
      }, 
      templateUrl : '...' 
     }; 
    }); 

我的新組件的Html模板:

<autocomplete 
    id="{{id}}" 
    selectedobject='{{selectedMovie}}' 
    searchUrl='/rest/movies?search=' /> 

但是這不起作用。 id屬性正確傳遞到「內部」autocomplete,但由selectedmovie屬性設置的對象引用不起作用。

我已經做了第二次嘗試,傳遞對象引用的名稱,而不是對象本身的:

指令:

angular.module('autocompletemovie', []) 
.directive(
    'autocompletemovie', 
    function() { 
     return { 
      restrict : 'E', 
      scope : { 
       "id" : "@", 
       "selectedMovie" : "@selectedmovie" 
      }, 
      templateUrl : '...' 
     }; 
    }); 

但是這並沒有正常工作。

我希望你能理解我想要達到的目標。

[編輯] 我也曾嘗試:

<autocomplete 
    id="{{id}}" 
    selectedobject='selectedMovie' 
    searchUrl='/rest/movies?search=' /> 

但它不工作。與固定名稱selectedMovie一個對象上的範圍創建的,即使我所說的指令具有不同的屬性selectedmovie

<autocompleteMovie 
    id="favoriteMovie" 
    selectedmovie='favMovie'/> 

在上面的例子我想有稱爲favoriteMovie和不selectedMovie的對象。

[/編輯]

回答

1

嘗試改變:

<autocomplete 
    id="{{id}}" 
    selectedobject='{{selectedMovie}}' 
    searchUrl='/rest/movies?search=' /> 

<autocomplete 
    id="{{id}}" 
    selectedobject='selectedMovie' 
    searchUrl='/rest/movies?search=' /> 

在一個指令中的=語法結合的對象,而{{}}語法是要被解釋爲一個字符串。該id的作品是因爲@將解釋的字符串值傳遞給指令。

+0

我也嘗試過,但它沒有按預期工作。我編輯了這個問題來添加進一步的解釋。 – 2014-10-27 16:59:57

相關問題