2016-02-09 70 views
0

我有以下HTML,運行以下指令。我需要將loop參數傳遞給指令模板。但由於某種原因,它不起作用。爲什麼?角度傳遞參數到指令

HTML

<ul> 
    <list-element loop></list-element> 
</ul> 

ANGULAR

angular.module('myApp', []).directive('listElement', function(){ 
    return { 
     templateUrl: 'list-element.html', 
     scope: {}, 
     link: { 
      scope.loop : vm.list 
     } 
    }; 
}); 

模板

<li ng-repeat="(slug, label) in loop"> 
    <strong>{{ slug }}</strong> - {{ label }} 
</li> 
+1

這是無效的語法。檢查'scope'和'link'的文檔,你在這裏似乎有一個誤解... – elclanrs

+0

什麼是'vm.list'?那是你想要顯示的項目列表嗎?如果是這樣,它是如何填充的?你似乎缺少一些東西,比如控制器。 –

回答

0

我想你想要的是:

HTML:

<ul> 
    <list-element loop="vm.list"></list-element> 
</ul> 

角:

angular.module('myApp', []).directive('listElement', function(){ 
    return { 
     templateUrl: 'list-element.html', 
     scope: { 
      loop: '=' 
     } 
    }; 
}); 

我猜環路= 「vm.list」 的事情,因爲我不知道該代碼的其餘部分。但是,這個想法是,你想要將對象作爲一個名爲'loop'的屬性來傳遞。

0

隔離範圍雙向綁定是按以下步驟進行:

scope:{ 
    loop:'=' 
} 

你可能經過的角度開發指南here

0

試試這個

HTML

<ul> 
    <list-element loop ></list-element> 
</ul> 

Angular Directive

angular.module('myApp', []).directive('listElement', function(){ 
return { 
    templateUrl: 'list-element.html', 
    scope: { 
    }, 
    link: function (scope) { 
     scope.loop = vm.list 
    } 
}; 
});