如何在angularJS中从控制器读取指令变量

如何在angularJS中从控制器读取指令变量,angularjs,angularjs-directive,angularjs-controller,Angularjs,Angularjs Directive,Angularjs Controller,我下载了一个angularJS模块,它为我提供了多日期选择器(由1个工厂和1个指令组成),我将它们集成到了我正在构建的模块中 即使在我的angular模块中添加了指令和工厂,它也可以正常工作 如何读取控制器中指令创建的数组scope.days 1个工厂、1个指令和1个控制器: 工厂 schedulerApp.factory('multipleDatePickerBroadcast', ['$rootScope', function ($rootScope) { var sharedSer

我下载了一个angularJS模块,它为我提供了多日期选择器(由1个工厂和1个指令组成),我将它们集成到了我正在构建的模块中

即使在我的angular模块中添加了指令和工厂,它也可以正常工作

如何读取控制器中指令创建的数组
scope.days

1个工厂、1个指令和1个控制器:

工厂

schedulerApp.factory('multipleDatePickerBroadcast', ['$rootScope', function ($rootScope) {
    var sharedService = {};

    sharedService.calendarId = null;
    sharedService.message = '';

    sharedService.resetOrder = function (calendarId) {
        this.message = 'reset';
        this.calendarId = calendarId;
        this.broadcastItem();
    };

    sharedService.broadcastItem = function () {
        $rootScope.$broadcast('handleMultipleDatePickerBroadcast');
    };

    return sharedService;
}]);
指令

schedulerApp.directive('multipleDatePicker', ['$log', 'multipleDatePickerBroadcast', function ($log, multipleDatePickerBroadcast) {
    "use strict";
    return {
        restrict: 'AE',
        scope: {
           ...
           days: "=",
           ...
        },

        link: function (scope) {
          // Initialization of the variable needed in the controller
          scope.days = scope.days || [];

          // Function to assign some value to scope.days
          scope.toggleDay = function (event, momentDate) {
             ...
             scope.days.push(momentDate);
             ...
          };

        },

        ...
}]);
控制器

schedulerApp.controller('SchedulerCtrl', function($scope, $compile, $timeout, $http, $sce) {

$scope.dbinding = [];

});
感谢您的帮助。谢谢

HTML

<multiple-date-picker days="dbinding "/>

您可以尝试双向绑定并通过模板中的属性访问它

schedulerApp.directive('multipleDatePicker', ['$log', 'multipleDatePickerBroadcast', function ($log, multipleDatePickerBroadcast) {
    "use strict";
    return {
        restrict: 'AE',
        scope: {
           ...
           days: "=",
           ...
        },

我正在阅读,但是一旦在指令的范围中定义,我是否也应该在控制器中定义$scope.days=[];?另外,如何添加到模板中?只需将其作为模板使用,并且在链接之后,它应该可以在someVariable中访问您的作用域。控制器变量中的“天”和指令变量中的“someVariable”是其他方式。Days是指令的属性(您可以在directive controller中修改),您可以在控制器中使用某个变量来访问它。我已经修改了我的帖子,请查看。这样,当我在指令中更改或推送项目到天时,控制器端的数组永远不会得到更新……我做错了什么?