如何创建可从多个控制器访问的帮助程序/实用程序类?
例如,我有两个控制器:UpdateItemCtrl
和CreateItemCtrl
.它们具有共同的功能,增加了冗余并降低了可管理性.
我想创建一个ItemSaveHelper
类,我将常用方法放在其中,并从活动控制器中调用它们.
假设您最多有100个元素,其类型和格式不会改变,但它们的上下文会改变.(它们基本上是行)
这些行绑定到输入并随着用户键入而改变.
什么是最佳性能的最佳方法?重用这些元素,保持一切,但改变他们的背景?还要别的吗?
编辑,澄清:
搜索算法是无关的,但我确实使用MVVM(angularjs)框架,所以我正在做的搜索是在JavaScript上,而不是瓶颈; 得到结果后,我相应地更新.
此外,我不需要搜索DOM上的元素,我确实有元素的引用,我想在更新期间最小化运行时间.
有没有办法在每次从服务器返回响应后调用函数而不在回调后显式调用它?
主要目的是我有一个通用的错误处理程序服务,我在每个请求的回调中调用它,我想在某处指定它,它应该自动调用.
我想制作两个jQuery文件上传处理程序 - 一个到server1,另一个到server2.像这样的东西:
$('#fileupload').fileupload({
url: 'server1',
type: 'POST',
autoUpload: true,
formData: {
....
}
})
$('#fileupload').fileupload({
url: 'server2',
type: 'POST',
autoUpload: true,
disableImageResize: false,
imageMaxWidth: 200,
imageMaxHeight: 200
})
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,只调用第二个处理程序,因此只有第二个服务器接收该文件.如何让两台服务器都收到文件?
更新:
有些人指出这些调用是异步的,这是正确的 - 但回调方法也不起作用,这也是我需要帮助的原因:
$('#fileupload').fileupload({
url: 'server1',
type: 'POST',
autoUpload: true,
formData: {
....
}
}).on('fileuploadstop', function(){
$('#fileupload').fileupload({
url: 'server2',
type: 'POST',
autoUpload: true,
disableImageResize: false,
imageMaxWidth: 200,
imageMaxHeight: 200
})
});
Run Code Online (Sandbox Code Playgroud)
编辑2
我还在努力 - 我越来越近但我还没有完成它.
我的目标是当用户添加文件时,它会上传到一台服务器,然后立即上传到另一台具有不同设置的服务器.
这是最近的一个实现 - 这是第一次,但第二次有两个服务器的调用.看起来即使我只是初始化fileupload()一次(使用互斥锁)并且在第二次调用时小心地取消设置我的生命周期回调,但是下次有人上传文件时它仍然会双触发.有任何想法吗?
<form id="form_file_upload" action="/upload" method="post" enctype="multipart/form-data">
<input type="file" id="fileupload" name="file" multiple> …
Run Code Online (Sandbox Code Playgroud) 创建模块的常见做法是将它们包装在parens中,这样就不会泄漏模块外的任何变量(连接时等).
还有void
operator,它计算给定的表达式并返回undefined
.(见MDN)
我想知道在parens中使用包装函数而不是使用包装函数的原因是什么void
.它是历史的,是否与连接有关?
我知道,当其中一个文件缺少分号时,你可能会遇到连接问题,直到你注意到它为止会导致令人讨厌的问题.
说,module1.js(注意缺少的逗号):
(function () {
return function () {
console.log('module1. I should not be called');
};
})()
Run Code Online (Sandbox Code Playgroud)
和,module2.js:
(function () {
return function () {
console.log('module2. I should not be called either');
};
})();
Run Code Online (Sandbox Code Playgroud)
如果将这些脚本连成一个包,它将产生以下结果:
(function () {
return function () {
console.log('module1. I should not be called');
};
})()(function () {
return function () {
console.log('module2. I should not be called either');
};
})();
Run Code Online (Sandbox Code Playgroud)
由于两个模块(文件)都返回一个函数,所以第二个假定的IIFE成为第一个模块的 …
我需要在选择列表中获取所选选项的值(更改时)并更改选择列表旁边的范围中的文本.问题是我不知道选择列表的ID.页面上有很多不同的选择列表(5-25 +),它们都是动态创建的,所以我不能在中指定id .change()
.这是我有的:
JavaScript的:
$("select").change(function () {
var str = "";
str = $("select option:selected").text();
$(".out").text(str);
}).trigger('change');
Run Code Online (Sandbox Code Playgroud)
(当然这不起作用,在每个范围内放置所有选择值.)
HTML:
<select name="animal[]">
<option value="dog">dog</option>
<option value="cat">cat</option>
<option value="bird">bird</option>
<option value="snake">snake</option>
</select>
<span class="out"></span>
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
我正试图弄清楚如何使用Graph API或FQL获取用户朋友的信息
只是为了测试我想得到我的朋友education_histroy
.
为此,我创建了一个测试应用程序,请求使用扩展权限
scope=offline_access,manage_friendlists,friends_work_history,
friends_education_history,friends_about_me
Run Code Online (Sandbox Code Playgroud)
并获得访问令牌以使用API.
当我查询当前用户时,它工作得很好/me
.但它对我的朋友没有任何回报.
我假设如果我请求,那么当我按朋友的id查询时friends_work_history
,额外的field(work_history
)将出现在朋友的对象中:
https://graph.facebook.com/FRIEND_ID&access_token=TOKEN
但我所看到的只是关于该用户(朋友)的基本信息.
然后我特意请求该字段:
https://graph.facebook.com/FRIEND_ID?fields=work&access_token=TOKEN
没有运气了.只返回朋友的id ..
我试图用FQL访问该信息:
返回work_history = TRUE
而不是数组.那位朋友肯定有工作历史.
有人可以帮助我了解如何使用我的应用程序和扩展权限获取朋友信息?
我正在尝试使用AngularJS创建链接/级联下拉列表(选择元素),但我很难使用我的对象属性过滤和更新"选定"属性.
首次加载页面时,将筛选所选项目并正确显示在下拉列表中.一旦我更改了父下拉列表,子选择项就不会抓取筛选列表中的第一项,导致孙子下拉列表不更新.
任何见解都会非常感激,并注意我将父/子/孙子数组分开(而不是在子数组中),因为我最终将从SQL中的单独spocs/tables中提取数据.如果有一种简单的方法可以在JSON中创建子数组,那么我愿意更改数据结构.
这是一个编码示例的链接
HTML
<div ng-controller="dropdownCtrl" >
<div>
<select
ng-model="selectedParentItem"
ng-options="p.displayName for p in parentItems">
</select>
</div>
<div>
<select
ng-model="selectedChildItem"
ng-options="c.displayName for c in filteredArray | filter:{parentId:
selectedParentItem.id}">
</select>
</div>
<div>
<select
ng-model="selectedGrandChildItem"
ng-options="g.displayName for g in grandChildItems | filter:{parentId:
selectedChildItem.parentId}">
</select>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
调节器
function dropdownCtrl($scope, filterFilter) {
$scope.parentItems = [
{
"id": 0,
"displayName": "parent 00"
},
{
"id": 1,
"displayName": "parent 01"
},
{
"id": 2,
"displayName": "parent 02"
}
];
$scope.selectedParentItem = $scope.parentItems[0];
$scope.childItems …
Run Code Online (Sandbox Code Playgroud) 标题解释了问题,有文档和文档文件,我想要检索他们的作者信息,以便我可以重组我的文件.
os.stat
仅返回大小和日期时间,实际文件相关信息.
open(filename, 'rb').read(200)
返回许多我无法解析的字符.
有一个模块叫做xlrd
读取xlsx
文件.然而,这仍然不允许我阅读doc
或docx
文件.我知道新的办公室文件不容易在non-msoffice
程序上阅读,所以如果这是不可能的,从旧办公室文件收集信息就足够了.
存在通用视图使我们的生活变得更容易,但是花在理解这些东西如何工作上的时间使得它们实际上变得更难.也许是我,但我试图想办法解决这个问题很长一段时间,我可以轻松地自己写一下这个观点并继续前进,但我坚持要学习它.
我想要显示一个自定义的DetailView类,代码抛出:
'Sculpture' object has no attribute 'filter'
from django.shortcuts import render, get_object_or_404
from django.views.generic import ListView, DetailView
from sculptures.models import Sculpture
class SculptureListView(ListView):
"""docstring for SculptureListView"""
def get_queryset(self):
return Sculpture.objects.all()
class SculptureDetailView(DetailView):
"""docstring for SculptureDetailView"""
def get_queryset(self):
sculpture = get_object_or_404(Sculpture, slug=self.kwargs['slug'])
return sculpture
Run Code Online (Sandbox Code Playgroud)
我知道它需要一个线路修复 - 最多但无法弄清楚.
和想法?