好的,让我再试一次......
我有一个来自ng-repeat的值......就像这样:
<div class='span3 box box-nomargin' style="margin-left: 0px !important; padding-right: 20px;" ng-repeat="site in getSites">
这是“site.networkId”的值,我只需要获取网络的名称。
话虽如此,网络ID例如是:“2352wdfdsf23214”。
该名称位于另一个JSON数组中...所以我试图将此值传递给ANGULAR的FILTER,如下所示:
<span class="utilMonSmallText">{{ name | netNames:site.networkId }}</span>
名称是我需要的最终值,netNames,filter和site.networkId是我在上面的ng-repeat中的参数。
所以这是我的过滤器:
myApp.filter('netNames', function(myNetID)
{
console.log("Inside NetNames Filter: " + myNetID);
var networkName = _.filter(myNetID, function(name){ return name ==="name"; });
return networkName;
});
所以,如果我有把手,我只是创建一个助手和噗,所需的结果将被渲染。角;不是那么容易,或者我可能没有看到它。
网络集合具有ID和NAME。我只想将NAME替换为传递给GET名称的ID。
简单;正确?
更新:这是我的控制器......
// getNetNames gets an array with all the network names in the database
$scope.getNetNames = dashboardData.getNetNames();
$scope.getNetNames.then(
function(getNetNames) {
$scope.getNetNames = getNetNames;
$scope.netName = $.grep(getNetNames, function(n, i) { // just use arr
console.log("myName inside the topo getNetNames: " + n.myNetID)
return n.myNetID === "NAME";
});
console.log("get Names inside TOPO Ctrl: " + $scope.getNetNames);
},
function(response) {
console.log(response);
});
更新:这是我的服务
getNetNames: function(netid) {
var deferred = $q.defer();
$http({method: 'GET', url: myNetsURL + "" + netid})
.success(function(data, status, headers, config) {
console.log("NETWORK Name: " + data);
//Push NET NAMES into array for use down below.
deferred.resolve(data);
})
.error(function(data, status, headers, config) {
deferred.reject(status);
});
return deferred.promise;
}
答案 0 :(得分:2)
您没有以正确的方式将site.networkId
传递到过滤器中:
myApp.filter('netNames', function() { // You can inject a service here
return function(input, myNetID) { // the first parameter refers to "name" which is the json array that has the names
console.log("Inside NetNames Filter: " + myNetID);
var networkName = _.findWhere(input, {id: myNetID});
return networkName.name;
}
});
这假设具有名称的json数组位于$scope.name
。