2014-07-15 44 views
0

IM在一個簡單的待辦事項應用教程在線工作基礎上: http://ionicframework.com/docs/guide/building.html角JS/HTML查詢對離子

,如果我想要一個數據庫,在那裏,而不是一個固定的列表比如上例中,將有一個商店用戶可以在其中動態輸入他們的列表,並有空間進行編輯並評論他們的任務未完成?

  • 一段文字
  • 用戶名指出
  • 時間戳

然後,它將出現一個待辦事項列表一旦點擊,將開闢爲可編輯,並能夠添加更多評論到它?

我遵循了幾個教程,但他們都使用固定的數據集。 我做了一些研究,得到了下面的代碼片段,我對Angular的理解仍然很弱,所以我不太清楚代碼是如何工作的。

東西不工作,林不知道爲什麼。任何人都可以解釋和幫助? 關於params以及id如何發揮作用,以及URL路由的約定,如#/ something.html等。

本教程包含Firebase後端,但如果您有更好的建議(如服務器和後端結束語),請讓我知道。我見過使用JSON的教程,但再次,不知道如何工作。

對於app.js

.state('bucket.list.detail',{ 
    url: '/list/:itemId', 
    views: { 
     'bucket-list-detail':{ 
      templateUrl: 'templates/bucket-list-detail.html', 
      controller: 'DetailController' 
     } 
    } 

}) 

對於 (我剛纔輸入controller.js

.controller('DetailController', function($rootScope, $scope, $stateParams, $window, $firebase){ 
    $scope.item = items.get($stateParams.itemId); 
}) 

對於視圖文件,鬥列表detail.html一些垃圾線來測試代碼)

<p>{{ item.item }}</p> 

<p> 
    <a class="button button-small icon ion-arrow-left-b" 
    href="#/bucket/list"> Main List </a> 
</p> 
+0

如何啓動項目? –

+0

你在哪裏定義了「物品」?通常情況下,您需要調用Firebase或其他一些工廠以獲取該項目。 – lucuma

回答

0

首先在您的問題中,您的控制器中有items.get,但您沒有定義items。由於$firebase可能是某種工廠,因此您可能需要使用該工廠,或者構建一些獲取數據的服務(通過Firebase或其他方式)。

作爲示例,我已經使用.NET(web api)和Ionic構建了一個示例待辦事項應用程序,您可以在github上看到源代碼。 Firebase的總體戰略應該類似。

我有這樣的路線,非常類似於你的路線。這是用於詳細視圖:

.state('tab.tarea-detail', { 
    url: '/tarea/:tareaId', 
    views: { 
    'tab-friends': { 
     templateUrl: 'templates/_detalle.html', 
     controller: 'TareaDetailCtrl' 
    } 
    } 
}) 

該狀態參數將包含tareaId

列表視圖有一個ngRepeat,其中包含一個todo(西班牙語中的tarea)標識的鏈接。

<ion-item ng-repeat="tarea in tareas track by $index" type="item-text-wrap" href="#/tab/tarea/{{tarea.Id}}">{{tarea.Nombre}} {{tarea.Desc}} 
    <ion-delete-button class="ion-minus-circled" ng-click="tareaEliminar(tarea)"> 
    </ion-item> 

我的控制器將接收的ID和調用服務:

.controller('TareaDetailCtrl', function($scope, $stateParams, tareaService) { 
    //tareaService is just a wrapper for my ajax stuff, you could call firebase here or you could just use firebase 
    tareaService.obtener($stateParams.tareaId).then(function (data) 
    { 
     $scope.tarea = data; 
    }); 
}) 

服務片只是調用$ HTTP。這是服務的一部分:

obtener: function (id) 
    { 
     var d = $q.defer(); 
     $http.get(url + '/api/tareadata/obtener/' + id).success(function (data) 
     { 
      d.resolve(data); 

     }).error(function (data, error) 
     { 
      d.reject(); 
     }); 
     return d.promise; 
    }