我是Angular的新手,我想从一开始就学习好的做法.我遇到过三个Angular风格指南,它们看起来都很棒.我想知道哪一个最适合我采用,但由于我对大型Angular应用程序没什么经验,所以我无法成为其中的评判者.
那么哪一个最好?或者即使不是更好,那么在开发过程中更直观/更少的问题?也许你们中的一些人对所有人都有经验并且可以指出他们的利弊?
链接:
假设我有一个包含id,name和email字段的客户表.一个电子邮件字段是可选的.
代码如下所示:
client_fields = {
'id' : fields.String,
'name' : fields.String,
'email' : fields.String
}
Run Code Online (Sandbox Code Playgroud)
并用于显示:
class ClientList(Resource):
@marshal_with(client_fields)
def get(self):
return model.Client.query.all()
Run Code Online (Sandbox Code Playgroud)
如果未提供电子邮件,API会返回JSON,如下所示:
{
"id": "1",
"name": "John Doe",
"email": null
}
Run Code Online (Sandbox Code Playgroud)
但相反,我希望它返回此对象:
{
"id": "1",
"name": "John Doe"
}
Run Code Online (Sandbox Code Playgroud)
这基本上意味着我不希望它返回任何这样的属性,而不是具有null值的属性.有没有办法实现这一目标?
我有一个名为"list"的javascript变量.我需要将其作为POST数据发送到另一个页面,并在新选项卡中打开该页面(存在POST数据).
这段代码:
jQuery.post('datadestination.php', list);
Run Code Online (Sandbox Code Playgroud)
发送数据是正确的,但是当然它会在同一个标签页面中打开页面.
我看到使用隐形形式和类似问题的类似问题的一些解决方案,但我无法让它们工作.有没有简单的解决方案?
我有一个名为Less变量的变量@side
.我想要的是@sideOpposite
根据变量的值设置@side
变量.它只需要两个值:"left"或"right".
换句话说,我需要一个相当于JS代码的Less:
var side = "left",
sideOpposite = (side === "left")? "right" : "left";
Run Code Online (Sandbox Code Playgroud)
我试图使用when
函数完成此操作,但据我所知,它不能以这种方式工作,只适用于CSS属性,而不适用于变量:
when (@side = right){
@sideOpposite: left;
}
when (@side = left){
@sideOpposite: right;
}
Run Code Online (Sandbox Code Playgroud) 我有这个代码,它将"点"字符串转换为WebStorm文件模板中的camelCase:
#set($Controller_name = ${StringUtils.removeAndHump(${NAME}, ".")})
Run Code Online (Sandbox Code Playgroud)
例如,它转换foo.bar.test
为FooBarTest
.
但我需要的是将其转换foo.bar.test
为fooBarTest
.
我怎样才能做到这一点?
如何将此函数组合转换为更易读的格式?
funcA(argumentA, funcB(argumentA, funcC(argumentA, argumentB)))
Run Code Online (Sandbox Code Playgroud)
我想要实现的是更像这样的东西:
compose(funcC, funcB, funcA)(argumentA, argumentB)
Run Code Online (Sandbox Code Playgroud)
我正在使用这个 compose 函数实现:
const compose = (...fns) => fns.reduce((f, g) => (...args) => f(g(...args)))
Run Code Online (Sandbox Code Playgroud)
问题是我在所有函数调用中都需要参数 A 作为第一个参数,每个函数返回一个值作为第二个参数传递给下一个函数。我知道我可以创建单独的函数返回函数并像这样使用它们:
compose(funcCWithArg(argumentA), funcBWithArg(argumentA), funcAWithArg(argumentA))(argumentB)
Run Code Online (Sandbox Code Playgroud)
但在我的实际情况中,不仅有三个,而且还有更多,这需要大量的代码才能将它们写下来。有没有更简单的方法来做到这一点?
编辑:我不能使用任何外部库。只有香草js。
我有一个填充了一些数据的二维数组。我想选择与字段 [0][0] 具有相同值的所有字段,并按照下图所示的方式连接到该字段:
我想要选择以绿色突出显示的字段的矩阵示例(所选字段至少有四个边(N、W、S、E)之一彼此相邻:
你能想出一些简单的算法来实现这一点吗?我不希望有一些现成的代码 - 更像是一些指南。
我正在写一个Joomla!我需要显示当前文章标题的模块.
我已经在stackoverflow上找到了这个代码:
<?php
$option = JRequest::getCmd('option');
$view = JRequest::getCmd('view');
$ids = explode(':',JRequest::getString('id'));
$article_id = $ids[0];
$article =& JTable::getInstance("content");
$article->load($article_id);
echo $article->get("title");
?>
Run Code Online (Sandbox Code Playgroud)
虽然它有效,但它使用了弃用的类JRequest,因为它来自Joomla 1.7而我使用的是3.2.2.有人能告诉我如何重写它以使Joomla 3.2有效吗?
我想通过firebase和angularfire获得3路数据绑定.你可以看到我在Plunker里得到的东西:http://plnkr.co/edit/RGA4jZK3Y6n4RkPCHK37
app.js:
angular.module('ideaBattle', ["firebase"]);
Run Code Online (Sandbox Code Playgroud)
服务:
angular
.module('ideaBattle')
.constant('FBURL', 'https://ideabattle.firebaseio.com/')
.service('Ref', ['FBURL', Firebase])
.factory('dataBank', function(Ref, $firebase) {
return $firebase(Ref).$asArray();
});
Run Code Online (Sandbox Code Playgroud)
控制器:
angular
.module('ideaBattle')
.controller('ideaListCtrl', displayIdeas);
displayIdeas.$inject = ['dataBank'];
function displayIdeas(dataBank){
var vm = this;
vm.ideas = dataBank;
vm.upVote = function(idea){
vm.ideas[idea.id].votes++;
};
}
Run Code Online (Sandbox Code Playgroud)
HTML:
<div ng-controller="ideaListCtrl as vm">
<div ng-repeat="idea in vm.ideas | orderBy: '-votes'">
<div>
<h2>{{idea.name}}</h2>
<p>{{idea.desc|limitTo: 190}}</p>
<span class="btn" ng-click="vm.upVote(idea)">Vote! <span class="badge"> {{idea.votes}}</span></span>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
Plunker版本:http://plnkr.co/edit/RGA4jZK3Y6n4RkPCHK37
它做什么,它从firebase获取数据并正确显示它,但是当我按下按钮来调用upVote函数时,它只在本地更新.我知道为什么它只在本地工作,但我不知道如何使它也在firebase中更新.
我试着$ bindTo,但是从我的理解它需要$范围工作,我试图用"控制器作为虚拟机"模式,而无需进$范围.
谁能告诉我怎么咬那个?
假设我在mongo数据库中有一个人物集合:
[{
id: 1,
name: "Tom",
animals: ["cat", "dog", "fish", "bear"]
},
{
id: 2,
name: "Rob",
animals: ["shark", "snake", "fish", "bear", "panda"]
},
{
id: 3,
name: "Matt",
animals: ["cat", "fish", "bear"]
}]
Run Code Online (Sandbox Code Playgroud)
出于REST API的目的,我需要创建一个用于查看人物动物的分页系统,并且每个请求仅返回3个.因此,例如,如果你去/people/2
API应该返回这个数组:
["shark", "snake", "fish"]
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用Mongo方法获得此结果.这是我的尝试:
db.getCollection('people').find({id: 2}, {animals: 1, _id:0}, {limit: 3})
Run Code Online (Sandbox Code Playgroud)
不幸的是,它不能像那样工作并返回整个对象.谁能告诉我怎么做?
我有一个你在下面看到的代码:
<div class="categories-list">
Description One
<ul>
<li>
<span>CATEGORY1</span>
<span>CATEGORY2</span>
<span>CATEGORY3</span>
</li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
我想要做的是选择没有标签的文本"Description one"并使用jQuery用标签(特别是h2)包装它,所以最终的代码如下所示:
<div class="categories-list">
<h2>Description One</h2>
<ul>
<li>
<span>CATEGORY1</span>
<span>CATEGORY2</span>
<span>CATEGORY3</span>
</li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用wrap()函数来完成第二件事.选择部分是我遇到的问题.
我有一个简单的node.js + Restify后端,标准的CORS设置和这个端点:
var file = '1,5,8,11,12,13,176,567,9483';
server.get('/download', function(req, res, next) {
res.set({"Content-Disposition": "attachment; filename='numbers.csv'"});
res.setHeader("Content-type", "text/csv");
res.send(file);
return next();
}, function(err) {
res.send(err);
});
Run Code Online (Sandbox Code Playgroud)
它想要做的是创建CSV文件并将其返回.
当我只是在网络浏览器中键入端点地址并按Enter键时,它的效果很好.文件正确下载.
但是,当我尝试做同样的事情,但我没有使用浏览器的地址栏,而是使用Restangular:
Restangular.one('download').get().then(function (res) {
console.log(res);
});
Run Code Online (Sandbox Code Playgroud)
它只是将响应写入控制台,但没有下载任何文件.
有没有办法使用Restangular?或者我可能需要为此使用别的东西?
javascript ×7
angularjs ×3
jquery ×2
php ×2
angularfire ×1
coding-style ×1
ecmascript-6 ×1
firebase ×1
joomla ×1
joomla3.0 ×1
json ×1
less ×1
less-mixins ×1
mongodb ×1
node.js ×1
null ×1
pagination ×1
python ×1
python-2.7 ×1
recursion ×1
restangular ×1
restify ×1
velocity ×1
webstorm ×1