2013-05-03 85 views
0

免責聲明我來自淘汰賽,所以我有一個小麻煩交換了我的思路如何做某些事情,他們的這是一個...使用資源來填充範圍財產Angularjs

我有一個<input>,用戶可以輸入一個電影標題,並應顯示一個電影列表。電影的收集從我的其餘api通過呼叫http://www.example.com/api/movies?title=matrix提供。 api被封裝在角度資源模塊中。

我認爲$scope.movies = Movie.query({ title: $scope.searchValue });隨時會自動更新$scope.searchValue改變,但它似乎不工作的方式。

angular.module('robotdog.resources', ['ngResource']) 
    .factory('Movie', function($resource){ 
     return $resource('/api/movies/:id'); 
    }); 

robotdog.controller('HomeController', function($scope, Movie){ 
    $scope.movies = Movie.query({ title: $scope.searchValue }); 

}); 

只是爲了完整性這裏的目的是我爲這個特定的控制器標記......

<input type="text" ng-model="searchValue" placeholder="Search Movie Title"/> 
<pre>{{ movies | json }}</pre> 

什麼是填充$scope.movies與搜索結果的正確方法是用戶輸入後, <input>中的值?

+0

是U正在從服務器 – 2013-05-03 17:27:59

+0

響應,如果我輸入的輸入值,並按下回車鍵沒有任何反應。沒有請求被髮送,並且我在控制檯中沒有收到錯誤消息。 – bflemi3 2013-05-03 17:34:23

回答

3

當控制器初始化時,您只調用一次Movie.query。你需要添加一個函數來調用Movie.query,並使用每當searchValue變化:

<input type="text" ng-model="searchValue" ng-change="getMovies" placeholder="Search Movie Title"/> 


robotdog.controller('HomeController', function($scope, Movie) { 
    $scope.getMovies = function() { 
     $scope.movies = Movie.query({ title: $scope.searchValue }); 
    } 
}); 

每當用戶改變輸入這將調用您的REST API(即在按鍵),因此,如果這引起太多的RPC,你可能需要添加一個「搜索」按鈕,只有問題,當它擊中了RPC:

<input type="text" ng-model="searchValue"/> 
<button ng-click="getMovies">Go</button> 
+0

FTFY:'' – imdhmd 2013-09-24 06:14:36

0

或者你可以嘗試:

<input type="text" ng-model="searchValue" /> 
<p ng-repeat="movie in movies | filter: searchValue">{{ movie }}</p> 

沒有JS在控制器所需,除了一個基地IC查詢:

$scope.movies = Movie.query(); 

退房小提琴:http://jsfiddle.net/euan/zuhga76c/