如何在AngularJS中制作自定义指令,等待ng-repeat进行渲染?
我坚持的问题是:在渲染li元素之前的指令init,所以DOM没有准备好,并且计算的块的高度不对.
这是我的代码
AngularJS
.directive('navCollapse', function(){
return {
restrict: 'A',
scope: {
navItems: '=',
navScrollOn: '='
},
link: function($scope, $element, $attrs) {
var $navList = $element.find('ul'),
navItemsChildren = $navList.children('li'),
navItemsChildrenDefault = navItemsChildren.get(),
navItemsChildrenGet = navItemsChildren.get(),
showItems = ($scope.navItems !== undefined) ? $scope.navItems : 6,
showItemsOnScroll = ($scope.navItems !== undefined) ? $scope.navScrollOn : navItemsChildren.length,
isCollapsed = false,
calculateHeight = navItemsChildren.outerHeight() * showItems,
calculateFullHeight = navItemsChildren.outerHeight() * showItemsOnScroll;
$navList.wrap('<div class="links-wrap" style="max-height:'+ calculateHeight +'px"></div>');
function sortNav(element) {
element.sort(function(a,b){
var keyA = $(a).find('a').text();
var …Run Code Online (Sandbox Code Playgroud) 我有一个forEach在子组件的循环中运行的函数,该函数必须过滤数据并用结果更新状态。问题是,当我使用循环迭代该函数时,该函数同时运行并且在此期间,状态将无法使用数据正确更新。问题是如何更好地实现它,可能有一种方法可以使用 Promise 或 async /await 或者更简单的方法来实现。根据需要放入队列并等待状态更新。
简化的代码在这里是
组件子组件
this.props.data.forEach((item, i) => {
this.props.update(item);
});
Run Code Online (Sandbox Code Playgroud)
组件父组件
function update(data) {
let filtered = this.state.data.filter(item => item.uid !== data.uid);
this.setState({data: filtered});
}
Run Code Online (Sandbox Code Playgroud) 将图像上传到heroku服务器时遇到一些问题,在localhost上一切正常.但是当我上传图片时,在heroku上,它看起来一切顺利但刷新页面后我收到了错误消息404(未找到)所以它似乎没有上传.
这是我的代码
var express = require('express'),
app = express(),
server = app.listen(process.env.PORT || 5000),
fs = require('fs-extra'),
im = require('imagemagick'),
util = require('util'),
formidable = require('formidable');
app.post('/upload', function (req, res){
var form = new formidable.IncomingForm();
// show respond
form.parse(req, function(err, fields, files) {
res.writeHead(200, {'content-type': 'text/plain'});
res.write('received upload:\n\n');
console.log(fields + ' ' + files);
res.end(util.inspect({fields: fields, files: files}));
});
form.on('end', function(fields, files) {
var that = this;
// temporary storage of image
var temp_path = that.openedFiles[0].path;
// uploaded image name …Run Code Online (Sandbox Code Playgroud)