我在AngularJS应用程序中使用扩展用户模型时遇到了一些问题。
这是我的user.json:
{
"name": "user",
"base": "User",
"strict": false,
"idInjection": true,
"properties": {
"clientType": {
"type": "string",
"required": true
}
},
"validations": [],
"relations": {},
"acls": [
{
"accessType": "READ",
"principalType": "ROLE",
"principalId": "$everyone",
"permission": "ALLOW"
}
],
"methods": []
}
这是我的model-config.json:
{
"_meta": {
"sources": [
"loopback/common/models",
"loopback/server/models",
"../common/models",
"./models"
]
},
"User": {
"dataSource": "mongo"
},
"AccessToken": {
"dataSource": "mongo",
"public": false
},
"ACL": {
"dataSource": "mongo",
"public": false
},
"RoleMapping": {
"dataSource": "mongo",
"public": false
},
"Role": {
"dataSource": "mongo",
"public": false
},
"Store": {
"dataSource": "mongo",
"public": true
},
"user": {
"dataSource": "mongo",
"public": true
}
}
这是我的UserCtrl.js
angular.module('app.controllers.user', [])
.controller('UserCtrl', ['user', function (user) {
var vm = this;
vm.addUser = function () {
user.create({
firstName: vm.firstName,
lastName: vm.lastName,
email: vm.email,
password: vm.password,
userType: 'customer'
})
.$promise
.then(function (c) {
console.log('added user: ' + c.email);
});
};
}])
我收到以下错误:
错误:[$ injector:unpr]未知提供商:userProvider< - user< - UserCtrl
如果我使用' 用户'而不是' 用户'它有效,但它没有使用我的扩展用户模型和指定的ACL(每个人都阅读)
我已经读过您可以指定var myUser = app.model.user
以确保LoopBack使用扩展模型。但我不知道如何在AngularJS中做到这一点,因为我在控制器中将模型指定为函数参数。
你能告诉我如何在我的AngularJS应用程序中使用我的扩展用户模型吗?
提前感谢!!
答案 0 :(得分:0)
您是否在Angular客户端库中生成了用户模型?如果您的应用程序在您使用环回自动生成"用户"模型,那么我最好的猜测是,在最初生成角度服务之后,您已经创建了扩展模型" user"。如果您没有使用grunt任务,那么您应该重新生成角度服务,以使用自上次生成文件后添加的所有更改和新模型更新文件。
使用lb-ng命令执行此操作。正如文件所示
例如,如果您的应用程序具有标准的LoopBack项目布局,则在/ client子目录中输入以下命令:
$ mkdir js
$ lb-ng ../server/server.js js/lb-services.js
您可以在以下链接中找到更多信息 http://docs.strongloop.com/display/public/LB/AngularJS+JavaScript+SDK
答案 1 :(得分:-3)
您需要定义名为“user”的服务,工厂,提供者,值或常量,以便在您的控制器中注入服务。我在你的帖子中没有看到这些。
我的建议是,如果您的扩展用户模型是类的实例,那么请使用服务:
app.service('user', fn);
如果您的扩展用户模型是JSON格式的对象文字,那么请使用工厂:
app.factory('user', function() { return { ... }; });