2015-05-22 123 views
0

我創建生成基於相關聯的領域的性質一些標記,一個指令獲取對象。我打算這樣使用它:AngularJS指令:從屬性

<mvc-error-list field="myForm.testField"></mvc-error-list> 

在指令中,我想查找myForm.testField對象的屬性。但我不清楚如何根據傳遞給模板函數的字符串值來檢索myForm.testField對象。

+0

創建一個問題plunkr – sirrocco

回答

1

如果你想你的控制器,你的指令,你可以使用一個分離指令範圍和雙向對你指令的作用域屬性綁定到一個你的控制器的範圍之間共享的對象。

angular.module('testApp', []) 
 
.directive('myDirective', function(){ 
 
    return { 
 
    restrict: 'E', 
 
    scope: { 
 
     field: '=' 
 
    }, 
 
    link: function(scope){ 
 
     console.log(scope.field.message) 
 
    } 
 
    }; 
 
}) 
 
.controller('myCtrl', function($scope){ 
 
    $scope.ctrlField = { message: 'Hello, World' }; 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app='testApp' ng-controller='myCtrl'> 
 
    <my-directive field='ctrlField'></my-directive> 
 
</div>

另外,如果你不需要通過任何東西到你的控制器,你可以使用一個雙向綁定。它的工作方式相同,但在定義隔離範圍時使用&而不是=。您還需要作爲函數訪問該屬性,因爲單向數據綁定會在您的指令作用域上創建一個「getter函數」。