【发布时间】:2016-02-16 00:14:22
【问题描述】:
正如标题所暗示的,我正在尝试通过 http get 请求从数据库中获取一些数据,然后使用 ngRepeat 将其显示在 div 列表中。我需要对 ngRepeat 的每个重复项调用一个函数,以便请求可以使用该对象(“房间中的房间”中的“房间”)作为 url 参数。我认为问题在于,因为我已经隔离了函数的范围,所以来自 http 请求(计数)的响应似乎超出了函数的范围。我怎样才能做到这一点,以便我可以在视图 {{count}} 中显示响应,同时使用函数将其保持在自己的隔离范围内?
http
<div ng-repeat="room in rooms">
<div>{{room}}</div><br>
<div plant attrcount="plantCount(room)"></div>
</div>
server.js
MongoClient.connect(process.env.MONGOLAB_URI, function(err, db) {
var plantList = db.collection("plantList");
app.get('/getrooms', function(req, res) {
plantList
.distinct("room", function(err, docs) {
res.json(docs);
});
});
app.get('/getplantsbyroom/:room', function(req, res) {
var roomReq = req.params.room;
plantList.count({"room":roomReq}, function(err, count) {
res.json(count);
});
});
});
controller.js
angular.module('myApp').controller('AppCtrl', function($scope, $http) {
$http.get('/getrooms').success(function (response) {
$scope.rooms = response;
});
$scope.plantCount = function(room) {
var url = '/getplantsbyroom/' + room;
$http.get(url).success(function (response) {
$scope.count = response;
})
}
});
angular.module('myApp').directive("plant", function() {
return {
scope: {
attrcount:"&"
},
template: '<p ng-init="attrcount(room)">{{count}}</p>' //doesn't display count
}
});
【问题讨论】:
-
为什么要操心这个指令呢?
-
您是否通过 $http 请求获得房间?类似
$scope.rooms = $http.get()? -
因为每次调用 plantCount() 函数时,我都会将重复项的所有计数变量更改为相同的值。所以我需要隔离它们,这样每个重复的项目都是独一无二的。查看我的 node/express 代码可能会有所帮助,因此我也会将其发布。
-
@Austin,是的,这是正确的。我刚刚包括了上面的那一点。很抱歉!
标签: javascript angularjs