2014-10-03 89 views
1

这可能是一个非常基本的问题,但我找不到答案。我刚开始学习AngularJs,我试图用控制器做一个简单的页面,您可以在输入中输入文本并发出HTTP GET请求。到目前为止,我有以下几点:将参数传递给AngularJS控制器方法

在HTML

<body ng-app="starter" ng-controller="searchController as searchController"> 

<ion-pane> 
    <ion-header-bar class="bar-stable"> 
    <h1 class="title">Ionic Blank Starter</h1> 
    </ion-header-bar> 
    <ion-content> 
    <input type="text" ng-model="searchController.searchString" required /> 
    <button class="btn" ng-click="searchController.search()">Search</button> 
    </ion-content> 
</ion-pane> 

在控制器

angular.module('starter', []) 
    .controller('searchController', function() { 
    this.searchURL = 'http://www.myapifilms.com/imdb?title=%thetitle%&format=JSON'; 
    this.searchString = ''; 

    this.search = function searchMovie() { 
     url = this.searchURL.replace('%thetitle%', this.searchString); 
     console.log("URL: " + url); 
     this.searchRequest($http, url); 
    }; 

    this.searchRequest = function ($http, url) { 
     $http.get(url).success(function(data) { 
      console.log("Success: " + data); 
     }) 
    }; 
}); 

线this.searchRequest($http, url);显然是错误的,因为我没有提到的$ HTTP,稍后将由AngularJs注入。

所以我的问题是如何混合AngularJs服务,如$ http与我自己传递的参数?也许我没有正确地设计这一点,并希望听到关于此的评论。我的目标是获取输入文本并用它发出HTTP请求。

回答

2

你应该在注入控制器申报服务(角或您的自定义服务),而不是通过它的方法

angular.module('starter', []) 
    .controller('searchController', ["$http", function($http) { 
     ... 
    }]); 
+0

这奏效了,感谢! – momo 2014-10-03 03:53:38

相关问题