首页 > 解决方案 > 将数据发送到 AngularJS 中的另一个控制器

问题描述

如何将 array.length 发送到另一个控制器?

第一个控制器:下面的代码

function uploader_OnAfterAddingFile(item) {

    var doc = {item: {file: item.file}};

    if (doc.item.file.size > 10240) {
        doc.item.file.sizeShort = (Math.round((doc.item.file.size / 1024 / 1024) * 100) / 100) + 'MB';
    } else {
        doc.item.file.sizeShort = (Math.round((doc.item.file.size / 1024) * 100) / 100) + 'KB';
    }
    doc.item.showCancel = true;

    if ($scope.documentStatus) {
        item.formData.push({status: $scope.documentStatus});
    }
    if ($scope.tenderDraftId) {
        item.formData.push({tenderDraftId: $scope.tenderDraftId});
    }

    item.getDoc = function () { return doc; };
    doc.item.getUploadItem = function () { return item; };

    $scope.documents.push(doc);

    //I need send $scope.documents.length
}

发送到其他控制器第二控制器上的此功能:

在此处输入图像描述

它们在一页中。

First Controller 它是一个发布上传文件的组件。

第二个控制器它是一个模态窗口,其中我们有两个文本输入和第一个控制器的元素。

我现在需要的只是array.length文件,这些文件是在模态窗口的提交函数中上传的。我尝试使用 $rootScope 但它没有帮助我。

标签: angularjs

解决方案


我认为您在这里真正想做的是参加$emit一个$broadcast活动。这将允许您编写更少的代码,并能够轻松地将这些数据传递到应用程序中您希望的任何地方!使用事件侦听器,$on也将提供相同的效果。

请仔细阅读本文以了解哪个选项最适合您的用例。 https://medium.com/@shihab1511/communication-between-controllers-in-angularjs-using-broadcast-emit-and-on-6f3ff2b0239d

TLDR: $rootScope.$broadcast 与 $scope.$emit


推荐阅读