我重写了部分代码,使其更易于理解,因此请耐心等待代码的完整,我只写了导致问题的部分。如何使用刚刚在当前视图中呈现的参数值调用角度控制器函数?
我有一个mean.js应用程序,后端使用express和mongodb排序,我的所有资源端点都独立运行,但现在我正在查看具有复杂模式的对象,因此可以说objA具有值ObjectId for objB
每当我尝试从ObjA视图中通过Id来检索ObjB时,我调用getObjectBbyID的$资源工厂,但我无法在当前的$ scope中找到可用于存储的值只是通过NG-绑定在ObjA HTML视图呈现的值
猫鼬模型
var objASchema = new Schema({
name:{
type: string
},
myobjB:{
type: Schema.ObjectId,
ref: 'ObjectB'
}
)};
mongoose.model('ObjectA', objASchema);
在我的角度前端有一个$资源工厂,通过标识
终于得到$资源angular.module('objbmodule').factory('ObjectBs', ['$resource',
function($resource){
return $resource('api/objbs/:objbId',{
objbId: '@_id'
}, {
update:{
method: 'PUT'
}
});
}]);
在我看来,我试图检索对象B的标识,对象A findOne的视图中()
angular.module('objas').controller('ObjAController', ['$scope',$routeParams','ObjectBs' function($scope, $routeparams, ObjectBs){
$scope.findOne=function(){
$scope.obja= ObjectAs.get({
objaId: $routeParams.objaId
});
};
$scope.findObjB=function(someid){
if(!someid)
console.log("noid");
$scope.objb = ObjectBs.get({
objbId: someid
});
};
}
]);
现在的问题就出在这里,在这一个观点我需要调用2工厂GET方法,第一个使用从我的申请途径的观点在原来的$ routeParam提供的ID,第二个使用objbId当检索到第一个ObjA时呈现的值。
<div ng-controller="ObjAController" ng-init"findOne()">
<span ng-bind="obja.name">{{obja.name}}</span>
<span ng-bind="obja.objbId">{{obja.objbId}}
<span ng-init="findObjB(obja.objbId)" ng-bind="objb.name">
</div>
我无法找到一个可能的NG指令,可以使用刚刚呈现在该视图的ID值勾起我的控制器的方法,因为它只是在渲染HTML存在,
我不确定这里的问题是否完全清楚。如果通过“Id值”来表示'obja.objId',那就是'$ scope.obja.objbId'。 '$ scope'隐含在HTML中,但这些值仍然绝对存在于JS中,而不仅仅是在呈现的HTML中。另外,严格来说,这并不适用于'ng-init'。 – Claies
Object a为Object b _id值保存一个值,我试图在前端角控制器中使用或保存某个值,以便与Object B工厂一起使用它通过使用get工厂的Id检索对象B. 我使用ng-init作为唯一的方式,我确信会调用我的控制器中的第二个函数,负责获取Object B文档,而无需任何用户输入。 –