Sin el alias ngcontroller, puedo recuperar los datos. Sin embargo, cuando tengo un alias, no puedo. ¿Cuál es mi error aquí?
Etiquetas HTML:
<div style="padding: 10px" id="content_dv" ng-controller="displaytopic_ctrl as f">
<div class="topic_dv" ng-repeat="t in f.topic">
<p>{{ t.MEMBER_NAME }}</p>
</div>
</div>
en app.js:
.controller("displaytopic_ctrl", ["$http", function($http) {
$http({
method: "get",
url: api_url + "get_topic_list.php",
data: {
type: "all"
}
}).success(function(d){
if(d.t=="p"){
this.topic = d.topic;
}
}).error(
function(){
console.log("Query error");
});
}]);
Respuestas
0 para la respuesta № 1Debido a la forma Los cierres de JavaScript funcionan, el this
variable que está utilizando en su devolución de llamada de éxito no es el controlador. El mecanismo más utilizado para resolver esto es crear un alias para el controlador al que puede hacer referencia dentro de sus devoluciones de llamada.
Por ejemplo:
.controller("displaytopic_ctrl", ["$http",
function($http) {
var controller = this;
$http({
method: "get",
url: api_url + "get_topic_list.php",
data: {
type: "all"
}
}).success(function(d) {
if (d.t == "p") {
controller.topic = d.topic;
}
}).error(
function() {
console.log("Query error");
});
}
]);