我在不同的模块中分割我的角度代码,我正面临着一个问题.我想我不理解服务注入的内部.
从定义为全局函数的控制器开始
angular.module('foo', []);
function fooCtrl($scope, $routeParams) {
Run Code Online (Sandbox Code Playgroud)
以声明形式将它们作为模块的一部分
angular.module('foo',[]).
controller(['fooCtrl', function($scope, $routeParams) {
Run Code Online (Sandbox Code Playgroud)
最后我丢失了$ routeParams服务(未定义).我是否需要将明确的$ routeParams注入模块?我该怎么做?
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');
var Cat = mongoose.model('Cat', { name: String });
var kitty = new Cat({ name: 'Zildjian' });
console.log(kitty);
kitty.save();
console.log(kitty);
Run Code Online (Sandbox Code Playgroud)
这个输出:
{ name: 'Zildjian', _id: 523194d562b0455801000001 } 两次
我已经尝试通过在超时后延迟保存,但它是相同的,它指向_id被设置在new Cat而不是.save()
这是因为mongodb还是mongoose,为什么在实际持久性之前设置_id?
所以我已经阅读了关于在couchdb上翻译关系的内容,但我仍然无法想出一个合适的地图函数来表示多对多.
想象一下你有一些文档(注意这是一个例子,而不是实际的模型):
{name:"whatever1", from:"A"}
{name:"whatever2", from:"A"}
{name:"whatever3", to:"B"}
{name:"whatever4", to:"C"}
Run Code Online (Sandbox Code Playgroud)
以及定义关系的其他一些类型的文档:
{name:"link1", link: true, from: "A", to: "B"}
{name:"link2", link: true, from: "A", to: "C"}
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用正确的函数来返回组合列表:
{ name: "link1",
froms: ["whatever1", "whatever2"],
tos: ["whatever3"]
}
Run Code Online (Sandbox Code Playgroud)
有谁知道如何写这样的地图,我应该改变我的文档结构吗?如果您只想链接指南,请不要发布.
是否有一种更优雅的方式来编写这种函数而无需初始化数组:
function getStuff () {
var some_array= [];
$("#some-id ul li span.key").each(function() {
some_array.push($(this).text());
});
return some_array;
}
Run Code Online (Sandbox Code Playgroud) 我一直在使用跟随API的mongoose编写CRUD应用程序:
save()findByIdAndUpdate()我想对这两种方法都有一个中间件.我试过pre('save', ...) pre('validate', ...)但他们只为创建路线开火.
是否有其他适用于两者的东西或我是否需要重构更新路由以使用save()API?
我想知道为什么在此示例中每次输入不能输入多个字符:
<div ng-app>
<div ng-controller="ctrl">
<table>
<tr>
<td ng-repeat="f in foo">
<input ng-model="foo[$index]" style="width:60px" ></input>
</td>
</tr>
</table>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
js:
function ctrl($scope) {
$scope.foo = [];
for (var i=0; i<5; i++) {
$scope.foo.push('');
}
}
Run Code Online (Sandbox Code Playgroud) ng-switch由于某种原因,我有一个问题,即使模型更新,视图也不会切换.它总是显示默认视图(仅用于测试),一切都应该在完整的HTML中正常工作,如此处测试http://plnkr.co/edit/fKlPKy?p=preview所以我想这是来自玉:
.btn-group(data-toggle='buttons-radio', style='float:right; margin-right:20px;')
.btn(ng-model='displayType', btn-radio="'grid'")
i.icon-th
.btn(ng-model='displayType', btn-radio="'list'")
i.icon-align-justify
.switch(ng-switch, on='displayType')
.switch(ng-switch-when='grid')
include gridView
.switch(ng-switch-when='list')
include listView
pre(ng-switch-default) {{displayType}}
Run Code Online (Sandbox Code Playgroud)
我可以在默认视图中看到,displayType根据所选的收音机,它已正确更新为"网格"或"列表"
更新了该区域的完整HTML:
<div ng-controller="cardCtrl" class="container ng-scope">
<div class="card-list-header">
<div class="card-search">
<div align="center" class="input-append">
<input type="text" ng-model="searchterm" placeholder="Type in filter criteria and press Enter..." ui-keypress="{13:'keypressCallback($event)'}" class="input-xxlarge ng-valid ng-dirty"><span ng-click="addCard()" class="add-on">+</span>
</div>
</div>
<div data-toggle="buttons-radio" style="float:right; margin-right:20px;" class="btn-group">
<div ng-model="displayType" btn-radio="'grid'" class="btn ng-pristine ng-valid active"><i class="icon-th"></i></div>
<div ng-model="displayType" btn-radio="'list'" class="btn ng-pristine ng-valid"><i class="icon-align-justify"></i></div>
</div>
</div>
<div ng-switch="ng-switch" …Run Code Online (Sandbox Code Playgroud) var array1 = [{ "name" : "foo" , "age" : "22"}, { "name" : "bar" , "age" : "33"}];
var array2 = [{ "name" : "foo" , "age" : "22"}, { "name" : "buz" , "age" : "35"}];
Run Code Online (Sandbox Code Playgroud)
什么是最快的方式(没有重复,名称是标识符):
[{ "name" : "foo" , "age" : "22"}, { "name" : "bar" , "age" : "33"}, { "name" : "buz" , "age" : "35"}];
Run Code Online (Sandbox Code Playgroud)
有和没有jquery如果可能的话.
我有一个自定义更新方法的资源:
angular.module('user.resources', ['ngResource']).
factory('User', function($resource) {
var User = $resource('/user/:id', {}, {
update: {
method: 'PUT'
}
});
User.prototype.update = function(cb) {
console.log('foo');
return User.update({
id: this._id
}, angular.extend({}, this, {
_id: undefined
}), cb);
};
Run Code Online (Sandbox Code Playgroud)
我通过范围将此资源传递给自定义指令:
directive('avatarUpload', function($http) {
return {
restrict: 'E',
scope: {
model: '='
}, ...
Run Code Online (Sandbox Code Playgroud)
我在btn点击中调用指令控制器中的更新方法:
$scope.model.update(function() {
console.log('bar');
});
Run Code Online (Sandbox Code Playgroud)
令我困惑的行为是,第一次打印'foo'而不是'bar'时点击按钮,再次点击它打印'bar',然后点击'foo'.再点击总是打印'bar'然后'foo'.
PUT请求仅从第二次点击和之后的点击,而不是从第一次点击.
注意:我一直在控制器中使用该资源更新方法,直到尝试从指令调用它.我正在使用angular 1.1.4我执行此资源传递,因为我希望该指令适用于不同类型的资源.
angularjs ×4
javascript ×2
mongoose ×2
angular-ui ×1
arrays ×1
couchdb ×1
jquery ×1
mongodb ×1
node.js ×1
pug ×1