0

単純な状況です。リストを取得するサービスがありますが、lists(<list_id>). そのサービスを自動的に呼び出す方法がわかりません...

私の問題のJS Fiddle

<select name='lists' 
   ng-model="list" 
   ng-options="t.title for t in lists._lists">
       <option value="">-- chose list --</option>
</select>
<h1>List was  -{{ list.title }}</h1>
<ul>
    <li ng-repeat="t in lists.lists(list)" class='task'>{{t.title}}: {{t.id}}</li>
 </ul>

主なサービス

angular.module('service',['ngResource']).factory('List', function($http) {
  var List= function(data) {
#magic to build List from json
#save to ._lists
#or if just one build List
  }
  List.lists = function(list_id, query) {
    url = '/tasks/lists/';
    #if list_id is there use it else give all lists
    return $http.get(url).then(function(response) {
      return new List(response.data);
   });
 };

メインjs

//this initially populates lists._lists with all the available lists
//it also has a List method on the object   
$scope.lists= List.lists();

選択を変更すると、タイトルの更新が表示されます。私のコントローラーには、リスト オブジェクトを受け取る「リスト」メソッドがあり、クエリを実行しますが、呼び出されません。

私が欠けているものについて何か提案はありますか?

4

2 に答える 2

2

選択したリストの変更に反応してから、サービスに問い合わせる方が良いと思います。それ以外の場合は、$digest ループごとにサービスを照会します。

$scope.$watch('list', function(list) {
       $scope.tasks = List.lists(list).tasks;    });

このソリューションで更新されたフィドル: http://jsfiddle.net/4PZGs/1/

(しかし、データを操作できませんでしたが、それはより複雑なコードの一部だった可能性があります...)

于 2013-01-27T00:13:26.067 に答える