2016-01-12 71 views
12

我正在嘗試在angular 1.5中使用新的.component()方法。目前我已經找到關於如何使用它的信息。角度文檔不提及它。

我想將作用域或對象從作用域傳遞給要在組件的模板部分中使用的.component,但只能傳遞兩個參數是$ element和$ attrs。我試圖通過html中的屬性傳遞對象,但我得到的只是對象名稱的字符串。

我試圖將其設定爲在這些方面

my-attr="item.myVal" 
my-attr="{item.myVal}" 
my-attr="{{item.myVal}}" 

每次我仍然得到字符串常量,而不是變量的值被表示爲一個變量。我怎樣才能將它設置爲一個變量?

我試圖通過新的綁定捕獲數據:{}但是我的模板:{}沒有訪問變量。

這裏是我的部分,因爲它現在是:

export var ItemListAction = { 
    controller: 'PanelCtrl as itemCtrl', 
    isolate: false, 
    template: ($element: any, $attrs: any): any=> { 
     var myVal: any = $attrs.myAttr; // returns "item.myVal" 
     var listAction: string = compileListAction(); 
     return listAction; 
    } 
}; 

這是我在HTML組件

<panel-item-list-action my-attr="item.myVal"></panel-item-list-action> 

這是該組件的角模塊聲明:angular.module('Panel', []).component('panelItemListAction', ItemListAction)

回答

6

模板唐不需要$ scope。模板函數返回HTML。您可以像往常一樣在控制器中注入$ scope。

這就是AngularJS博客說,大約成分:

module.component

我們已經創建了註冊組件指令的更簡單的方法。實質上,組件是特殊類型的指令,它們綁定到一個自定義元素(如<my-widget></my-widget>),並帶有關聯的模板和一些綁定。現在,在AngularJS 1.5使用.component()方法,您可以創建一個可重用的組件與代碼非常幾行:

var myApp = angular.module("MyApplication", []) 
myApp.component("my-widget", { 
    templateUrl: "my-widget.html", 
    controller: "MyWidgetController", 
    bindings: { 
    title: "=" 
    } 
}); 

要了解更多關於AngularJS 1.5組件的方法,請閱讀託德座右銘的文章: http://toddmotto.com/exploring-the-angular-1-5-component-method/

- http://angularjs.blogspot.com/2015/11/angularjs-15-beta2-and-14-releases.html

+0

感謝您的答覆,有沒有什麼辦法來訪問的範圍,對象或變量i在模板旁邊:{}屬性?博客沒有提到這個 – appthat

+1

模板不需要$ scope。模板函數返回HTML。您可以像往常一樣在控制器中注入$ scope。 – georgeawg

+0

等隔離範圍之外,.component()與ng-include類似嗎? – appthat

相關問題