[英]Send a data to another controller in 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
}
发送到其他控制器上的此功能第二个控制器:
它们在一页上。
首先是Controller,它是一个发布上传文件的组件。
第二个控制器是一个模态窗口,我们在第一个控制器中输入了 2 个文本和元素。
我现在只需要它 array.length 在模式窗口的提交功能中上传的文件。 我试过 $rootScope 但它没有帮助我。
我认为您在这里真正想做的是$emit
或$broadcast
一个事件。 这将允许您编写更少的代码并能够毫不费力地将此数据传递到您希望的应用程序中的任何位置,使用事件侦听器$on
也将提供相同的效果。
请仔细阅读本文以了解哪个选项最适合您的用例。 https://medium.com/@shihab1511/communication-between-controllers-in-angularjs-using-broadcast-emit-and-on-6f3ff2b0239d
您可以创建一个自定义服务来存储和返回您需要的值:请参阅“创建您自己的服务”标题下的更多信息。
或者您可以将 routeParams 注入第二个控制器:查看更多信息
前几天我遇到了类似的问题。 我会使用数据绑定和 $ctrl 方法。 这是一篇非常好的文章,其中包含一个示例,您可以将其复制到您的用例中:http: //dfsq.info/site/read/angular-components-communication希望这会有所帮助。 这种通信形式使得在同一页面上的两个组件之间共享数据变得容易得多。 文章示例:
.component('headerComponent', {
template: `
<h3>Header component</h3>
<a ng-class="{'btn-primary': $ctrl.view === 'list'}" ng-click="$ctrl.setView('list')">List</a>
<a ng-class="{'btn-primary': $ctrl.view === 'table'}" ng-click="$ctrl.setView('table')">Table</a>
`,
controller: function( ) {
this.setView = function(view) {
this.view = view
this.onViewChange({$event: {view: view}})
}
},
bindings: {
view: '<',
onViewChange: '&'
}
})
所以这意味着标题组件可以像这样使用
<header-component view="root.view" on-view-change="root.view = $event.view"></header-component>
.component('mainComponent', {
template: `
<h4>Main component</h4>
Main view: {{ $ctrl.view }}
`,
bindings: {
view: '<'
}
})
<header-component view="root.view" on-view-change="root.view = $event.view"></header-component>
<main-component view="root.view"></main-component>
当在不同组件中单击按钮时,我使用上面解释的方法在两个控制器之间传递数据以隐藏一个组件。 传递的数据是布尔值。 我希望你能用 array.length 做同样的事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.