Tengo un objeto JSON que no tiene datos adecuados. Así que quiero reemplazar el valor obtenido con uno de una tabla de búsqueda, pero no estoy seguro de cómo reemplazar el valor de los datos correspondientes a la tabla de búsqueda.
lookupTable = {
"pizza": function() {
console.log("food");
},
"house": function() {
console.log("building");
},
"air": function() {
console.log("nothing");
}
};
$scope.value =lookupTable["pizza"]()
Mi archivo html tiene
<tr ng-repeat="x in names">
<td>{{ x.lookupTable["pizza"]() }}</td>
Mi código está en http://plnkr.co/edit/w4lOFVRo9vSi8vqfbpXV?p=preview
¡Cualquier ayuda es apreciada!
3 respuestas
Tu código es muy confuso. Traté de editar su plunker, tal vez sea más fácil de ver que explicar.
<!DOCTYPE html>
<html>
<scriptsrc="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<body>
<div ng-app="myApp" ng-controller="customersCtrl">
<table>
<tr ng-repeat="x in names">
<td>{{ lookupTable[x.Name] }}</td>
</tr>
</table>
</div>
<script>
var app = angular.module('myApp', []);
app.controller('customersCtrl', function($scope, $http) {
$http.get("data.json")
.then(function(response) {
$scope.names = response.data.records;
});
lookupTable = {
"pizza": "food",
"house": "building",
"air": "nothing"
};
$scope.lookupTable = lookupTable;
$scope.value = lookupTable["pizza"]
console.log(lookupTable["house"])
});
</script>
Mirando su código, no estoy segura de lo que quiere lograr.
El ng-repeat le da tres objetos fuera de los nombres, pero ninguno de ellos tiene un miembro de tabla de búsqueda, por lo que {{x.lookupTable ["pizza"]}} falla en silencio.
Puede hacerlo visible, si solo se une a {{x}}
Aquí hay algunos problemas en su código desde el enlace que proporcionó:
- Las funciones en
lookupTable
no devuelven nada como se señaló en las respuestas anteriores. lookupTable
no es una propiedad de$scope.names
, por lo que usarx.lookupTable
no es válido.
Para que funcione, debes:
- Las funciones de
lookupTable
deberíanreturn
los valores reales en lugar de utilizarconsole.log
- Enlace
lookupTable
a$scope
- Utilice
lookupTable
directamente dentro de la vista, ya que está vinculado a$scope
Aquí está el código relevante:
<div ng-app="myApp" ng-controller="customersCtrl">
<table>
<tr ng-repeat="x in names">
<td>{{ lookupTable[x.Name]() }}</td>
</tr>
</table>
</div>
<script>
var app = angular.module('myApp', []);
app.controller('customersCtrl', function($scope, $http) {
$http.get("data.json")
.then(function(response) {
$scope.names = response.data.records;
});
$scope.lookupTable = {
"pizza": function() {
return 'food';
},
"house": function() {
return 'building';
},
"air": function() {
return "nothing";
}
};
});
</script>
Preguntas relacionadas
Nuevas preguntas
javascript
Para preguntas sobre la programación en ECMAScript (JavaScript / JS) y sus diversos dialectos / implementaciones (excepto ActionScript). Incluya todas las etiquetas relevantes en su pregunta; por ejemplo, [node.js], [jquery], [json], etc.