【发布时间】:2015-04-30 18:53:50
【问题描述】:
我编写了一个自定义指令来加载 3 个下拉菜单并处理控制器内下拉菜单的更改事件。在更改下拉值时,我在控制器函数中获得了更改后的值。我需要调用我的自定义指令并传递新值。
我是 AngularJs 自定义指令的新手。请告诉我如何从控制器中调用指令。
我呈现自定义指令的视图:
<div class="container">
<div class="main-header clearfix">
<div class="page-title">
<h3 class="no-margin">Search for a Host</h3>
</div>
<!-- /page-title -->
</div>
<div class="padding-md">
<div class="hostsFilters row">
<select ng-model="BU" ng-change="changeTheView()" class="form- control">
<option value="">BU</option>
<option value="1">BU1</option>
<option value="2">BU2</option>
<option value="3">BU3</option>
<option value="4">BU4</option>
</select>
<span>OR</span>
<select ng-model="Application" ng-change="changeTheView()" class="form-control">
<option value="">Application</option>
<option value="1">App1</option>
<option value="2">App2</option>
<option value="3">App3</option>
<option value="4">App4</option>
</select>
<span>OR</span>
<input type="text" class="form-text" ng-model="hostName.host_name" placeholder="Hostname">
</div>
</div>
<div class="row">
<i-data-grid></i-data-grid>
</div>
我的控制器的代码:
'use strict';
angular.module('angularFullstackApp')
.controller('MainCtrl', function ($scope) {
$scope.changeTheView=function(){
console.log('Came inside the Change the view function..');
//Now invoke the custom directive.
}
});
我的指令的代码:
'use strict';
angular.module('angularFullstackApp')
.directive('iDataGrid', function () {
return {
templateUrl: 'app/iDataGrid/iDataGrid.html',
restrict: 'E',
link: function (scope, element, attrs) {
$(document).ready(function() {
$('#example').dataTable();
} );
}
};
});
【问题讨论】:
-
你能添加一些你试过的代码吗..
-
你想从 iDataGrid 本身调用这些事件还是通过创建不同的指令来调用这些事件?
-
当下拉列表有任何变化时,需要从Controller调用iDataGrid。控制器不断监听下拉列表中的变化,在有变化的地方,控制器需要调用指令并将变化的值传递给它。
标签: angularjs angularjs-directive