2017-04-20 46 views
0

在AngularJS中編寫一個自定義組件,我想傳遞一個名爲「parentview」的屬性。AngularJS自定義組件 - 未定義的綁定

我的代碼如下。

組件控制器中'parentview'的console.log()顯示「未定義」......我不明白爲什麼。尤其是考慮到'用戶'和'限制'顯示得很好。

任何線索?

感謝

dashboard.html

<div> 
    <suggested-sessions user="user" limit="3" parentview='Dash'></suggested-sessions> 
</div> 

suggestedSessions組件:

component('suggestedSessions', { 
    bindings: { 
    user: '<', 
    limit: '<', 
    parentview: '<' 
    }, 
    template: 
    ` 
    <div class="padding-container"> 
    <session-item-by-id ng-repeat="group in $ctrl.groups | orderBy:'preview.timestamp'" group=group limit="3" parentview="$ctrl.parentview"></session-item-by-id> 
    </div> 
    `, 
    controller: function($q, $timeout, GroupService) { 
    this.$onInit = function() { 
     console.log('parent view: ', this.parentview); 
    } 
    } 
}); 
+0

什麼,如果你把你的直接的console.log(...)在你的控制器,I意思是不在函數$ onInit中但在它之外? – JeanJacques

+0

同樣的事情。其實我之前是這樣做的,並改爲$ onInit,因爲雖然那是問題......但不是 –

回答

0

嘗試使用@代替<結合你的字符串。

bindings: { 
    user: '@', 
    limit: '<', 
    parentview: '@' 
}, 

AngularJS Components文檔:

@綁定可以當輸入是一個字符串,尤其是當結合的值不改變使用。

0

如果你想傳遞一個字符串我想你需要添加額外的報價

的jsfiddle example

<div> 
    <suggested-sessions user="user" limit="3" parentview='"Dash"'></suggested- 
    sessions> 

</div>