我正在使用angular 1.5组件,并且需要在子组件中的$ emit时调用父控制器中的函数.我们怎么做到这一点?
例:
(function (angular) {
'use strict';
controllerName.$inject = [];
function controllerName() {
var _this = this;
function toBeCalledOnEmit() {//some code}
var vm = {
toBeCalledOnEmit: toBeCalledOnEmit
}
angular.extend(_this, vm);
}
angular.module('moduleName', [
]).component('parentComponenet', {
templateUrl: 'templateUrl',
controller: 'controllerName'
}).controller('controllerName', controllerName);
})(angular);
Run Code Online (Sandbox Code Playgroud)
子组件:
(function (angular) {
'use strict';
childController.$inject = [];
function childController() {
//needs $emit here
}
angular.module('childModuleName', [
]).component('childComponent', {
templateUrl: 'templateUrl',
controller: 'childController'
}).controller('childController', childController);
})(angular);
Run Code Online (Sandbox Code Playgroud) 我有一个只有1列和大约1000行的ui-grid.每行中都有一个文本框.我想通过选项卡浏览文本框.这可以很好地工作大约10到15行,之后文本框失去焦点,然后如果再次按Tab键,它将跳过下面几行并跳转到另一个文本框.
UI-Grid选项:
$scope.gridOptions = {
rowHeight: '200',
enableColumnMenus: false,
paginationPageSize: 2000,
columnDefs: [
{name:"value", width:'*',
cellTemplate: gridTemplate,
}
],
data: gridData
};
Run Code Online (Sandbox Code Playgroud) 我使用 Jasmine karma 测试用例一段时间,发现测试有时会失败,因为使用 .toBe() 而不是 .toEqual()。.toBe() 和 .toEqual()之间有什么区别以及何时使用它们?
我正在尝试将 HTML 表转换为 XLSX uisng AngularJS 甚至纯 JavaScript。
当我使用下面的下载正常转换为 XLS 时,一个 XLS 文件正在打开。
var blob = new Blob([template], {type: "data:application/vnd.ms-excel"});
window.navigator.msSaveOrOpenBlob(blob, "myExcel.xls");
Run Code Online (Sandbox Code Playgroud)
但是,我的要求需要 XLSX 中的文件,所以我在相同的代码中更改了文件的 MIME 类型和扩展名,如下所示,
var blob = new Blob([template], {type: "data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"});
window.navigator.msSaveOrOpenBlob(blob, "myExcel.xlsx");
Run Code Online (Sandbox Code Playgroud)
但是当我打开下载的 xlsx 文件时,它已损坏,并且 MS Office 会弹出错误弹出窗口。
我做错了什么以及如何将 HTML 表转换为XLSX?甚至替代的想法也被接受。
PS:表格相当复杂,列中的行等等,所以像 ALASQL、JS-XLSX 这样的插件没有帮助。