2016-11-15 69 views
0

我已經採用了棱角分明的一段時間,但我有點失落,當涉及到雙向數據控制器之間的結合(這是使用控制器的語法)和指令,它在該控制器的模板內。角指令更新父控制器對象

該指令的目的是本質上是一個輸入字段非常具體的數據集我需要收集(照片,文字和一些其他的東西)。

它是如何工作的。

我控制器FormCtrl負載從應用緩存一些數據。然後它將這些數據傳遞給一個名爲ctrl.form_fields的對象。

我需要我的指令能夠訪問ctrl.form_fields顯示的數據。此外,如果在指令中對數據進行任何更改,則會更新FromCtrl ctrl.form_fields對象。

我做了一些研究和實驗雙向父控制器和子指令之間的結合,但我無法弄清楚。如果有人能張貼一個理論的例子,我真的很感激它。

我不想使用$範圍。$父等等來完成這個,因爲它會太混亂和難以維護。另外我試圖儘可能不使用$範圍。

乾杯, 院長

回答

0

指令(的一部分)的一個例子:

controller: FooController, // import FooController as './foo.controller'; 
controllerAs: 'vm', 
replace: true, 
scope: { 
    fields: '=formFields' 
}, 
template: '<input type="text" ng-model="fields" />' 

然後在您的控制器,您可以使用引用 'vm.fields'。你的輸入字段應該是:

<input type="text" form-fields="fields" /> 

我還沒有測試過這個。

1

也許我沒有正確理解你的問題,但你不能通過屬性傳遞對象/值到指令,並使用雙向綁定表達式?

angular 
 
    .module('app') 
 
    .directive('myDirective', function() { 
 
    return { 
 
    restrict: 'E', 
 
    templateUrl: 'myTemplate.html', 
 
    scope: { 
 
     obj: "=" // Two way decleration 
 
    }, 
 
     
 
    controller: function($scope) { 
 
     console.log($scope.obj); 
 
    } 
 
    } 
 
    });
<my-directive obj="ctrl.object"></my-directive>

+0

謝謝。這工作。在這種情況下,我無法繞過雙向約束。我錯過了'='聲明。 :)雖然有一個問題 - 在我的指令中,Contollers變量現在可用,但只在$ scope上。有什麼辦法可以傳入它,所以我沒有使用$ scope.data? –

相關問題