2015-12-23 73 views
0

我試圖在ng-repeat中動態構建一個編碼查詢,然後將其傳遞到一個typeahead指令中。Ng重複成一個字符串&ng-repeat屬性的指令

我知道我可以在類似這樣的jsfiddle整個NG重複項傳: http://jsfiddle.net/yaroslavya/8YEkh/

而且我知道你可以很容易地通過一個字符串轉換爲指令屬性。

有沒有辦法做到這一點?

基本上在上面擺弄我願意做這樣的事情:

<div ng-repeat="image in images">    
     <typeahead-directive image='"encoded_query=" + image' ></div> 
    </div> 

我試着這樣做,它工作在控制檯中,但NG-repeat屬性不實際存儲的指令內:

<div ng-repeat="image in images">    
     <typeahead-directive image='encoded_query={{image}}' ></div> 
    </div> 

有什麼建議嗎?

+0

如果typeahead-directive有自己的作用域,試試image =「encoded_query = {{$ parent.image}}」。 –

回答

0

有沒有辦法做到這兩個?

在您的指令中,您可以使用$attrs獲取image屬性的字符串值。

您可以使用$eval從您的image屬性中獲取對象。

你的HTML

<div ng-repeat="image in images">    
     <div myimg image='image' ></div> 
</div> 

該指令

myModule.directive('myimg', function(){ 
    return{ 
     restrict: 'A', 
     scope: false, 
     template: '<p>{{image.title}}</p><img src="{{image.url}}" />', 
     controller: ['$scope','$attrs', function($scope, $attrs) { 
      console.log($attrs.image); 
      console.log($scope.$eval($attrs.image)); 
     }] 
     /*link:function(scope, elem, attr){ 
      console.log(attr.image); 
      console.log(scope.$eval(attr.image)); 
     }*/ 
    }; 
}); 

控制器的本地屬性在AngularJS $compile API Reference -- controllers

介紹的$eval功能在AngularJS scope API Reference

也記錄發現,我設置scope: false因爲你的指令並不真的需要一個範圍。