2015-08-23 24 views
4

我試圖重現AngularUI模式視圖和動態分配的控制器angular material行爲對話視圖,並能夠發送值作爲參數發送值作爲參數傳遞給一個動態分配的控制器

我試圖模仿AngularUI代碼沒有成功:

var elem = document.getElementById('placeholder'); 
elem.setAttribute('ng-controller', 'ctrl'); 

var injector = angular.element(elem).injector(); 
var compile = injector.get('$compile'); 
var rootScope = injector.get('$rootScope'); 
var controller = injector.get('$controller'); 
var ctrlInstance = controller('ctrl', {$scope:rootScope, value:'hello'}); 
var result = compile(elem)(rootScope); 

它可以在不傳遞值的情況下動態分配控制器。我究竟做錯了什麼?

http://codepen.io/anon/pen/oXKvyb

回答

1

不要設置在元素上的控制器。 : http://codepen.io/anon/pen/MwNgZx?editors=101

更新方法:

function setCtrl() { 
    var elem = document.getElementById('placeholder'); 
    //elem.setAttribute('ng-controller', 'ctrl'); 
    var eSpan = elem.children[0]; 
    var eSelect = elem.children[1]; 
    eSpan.setAttribute('ng-bind', 'name'); 

    eSelect.setAttribute('ng-options', 'o as o for o in rows'); 
    eSelect.setAttribute('ng-model', 'selectedValue'); 

    var injector = angular.element(elem).injector(); 
    var compile = injector.get('$compile'); 
    var rootScope = injector.get('$rootScope'); 
    var controller = injector.get('$controller'); 
    var result = compile(elem)(rootScope); 
    var ctrlInstance = controller('ctrl', {$scope:rootScope, value:'hello'}); 

} 

此外,獲得選擇時,你在做兒童[1]。患兒[0],那是不正確的。

我猜如果你在元素上設置了ng-controller,angular還會嘗試實例化它,但不知道從哪裏得到value參數。

編輯

而我所做的例子做你想要它做的事情。我覺得:)

+0

感謝什麼!只是想肯定你做了我正在尋找的東西...控制器是分配給元素還是分配給整個應用程序? AFAIK,在模式/對話框中,只有視圖(特定元素)分配了控制器。我對嗎? – ncohen

+0

控制器應用於編譯元素(帶有id佔位符的元素) – sirrocco

相關問題