2014-12-31 58 views
0

我有2個相同的指令彼此相鄰(<jd-autocomplete>),其中第二個ng-model值應該設置取決於第一個選定的值。從父控制器指令設置模型

<jd-autocomplete>指令採用名爲ac-change(函數)的作用域屬性,該指令在該指令內部發生更改時被調用。

它應該是這樣的:

<form> 
    <jd-autocomplete ac-change="doChange" ng-model="entry.vendor"></jd-autocomplete> 
    <jd-autocomplete ng-model="entry.category"></jd-autocomplete> 
</form> 

$scope.doChange = function(){}存在作爲父控制器上的方法,我將如何訪問和設置該功能內的第二個指令的模式?

這裏是我的plunkr:http://plnkr.co/edit/fTFM67wBcYtK6qdnjhNY?p=preview

回答

1

叉形你plnkr

在第一個文本框的編輯,你會在你的第二個文本框中具有相同的價值。現在,你可以寫doChange處理程序中的自定義登錄。

app.controller('AddFormController', [ 
    '$rootScope', 
    '$scope', 
    '$element', 
    '$http', 

    function ($rootScope, $scope, $element, $http){ 
     $scope.vendors  = [{'vendor_name':'hi', 'category_name': 'food'},{'vendor_name':'dude', 'category_name': 'food'}]; 
     $scope.categories = [{'category_name': 'food'},{'category_name': 'gas'}]; 

$scope.entry = {}; 

    $scope.wrapper = {}; 
     $scope.wrapper.doChange = function(obj){ 
      console.log(obj); 
      $scope.entry.category = obj; 
     }; 

    } 
]); 
+0

哦..哇!我所要做的就是將「入口」作爲父母的一個對象。比我希望的方式更容易 – daleyjem

+0

是的,這是使用angularjs的方式。如果您跨越指令或跨控制器或跨指令和控制器共享某些內容,則通過對象共享,而不是直接與作用域共享。它會降低複雜性,您可以更好地控制代碼。 – dhavalcengg

相關問題