我需要您对AngularJS问题的帮助:我创建了一个指令来管理客户/办事处的情况(两个选择框,一个用于客户,一个用于与所选客户相关的办公室)。当我加载包含指令的html页面时,我必须检查officeID"是否存在"并且,在这种情况下,使用基于该officeID的正确值填充html选择。为此,我必须在指令的控制器中调用一个函数。这是我的指示:
angular.module("app").directive('myCustomersOffices', ["ConstantsService",
function(ConstantsService){
return {
restrict: 'E',
scope : {
office : '='
},
controller : 'customersOfficesController',
templateUrl: ConstantsService.URL.BASE_APP+'/bundles/customers/views/customersOffices.html',
link : function (scope, elem, attrs, controller) {
//!!!!!!!!!!!!
//Here I would like to call getOfficesByOfficeID(officeID), a function
//contained in the controller
//!!!!!!!!!!!!!!!!!!!!
}
};
}]);
这是我的html指令模板:
<div id="customer-and-offices">
<select class="form-control" id="activity-customers"
data-ng-change="getOffices(selectedCustomer)" data-ng-options="customer.ID as customer.name for customer in customers" data-ng-model="selectedCustomer">
<option value="">Choose customer...</option>
</select>
<select class="form-control" id="activity-offices"
data-ng-options="office.ID as office.name for office in customerOffices" data-ng-model="office">
<option value="">Choose office...</option>
</select>
</div>
这就是我在主html页面中调用指令的方式:
<my-customers-offices office="activity.get().officeID"></my-customers-offices>
您可以阅读上述所有内容,从客户选择(&#34;正常&#34;案例)开始检索办公室。但是,正如我所说,如果officeID&#34;存在,我想调用函数getOfficeByOffice&#34;当html主页&#34;准备就绪时#34;。如何将可能的officeID传递给链接指令功能?提前谢谢。
答案 0 :(得分:1)
通常,在控制器中使用方法是个坏主意。我建议您创建包含可跨指令和控制器共享的功能的服务模块。然后,它只需要在主应用程序的任何位置注入模块(和服务)。
Here's a working fiddle有点接近你想要的。
代码:
'use strict';
var module = angular.module("myApp", [])
.controller('MyCtrl', function ($scope) {
$scope.variable = "this";
})
.directive('myDirective', function () {
return {
template: '{{variable}} is accessible here, so are functions.'
};
});
HTML;
<div ng-app="myApp" ng-controller="MyCtrl">
<div my-directive></div>
</div>