2017-04-15 47 views
0

此應用程序用於向練習添加參數,以便爲客戶/客戶端定製該參數。將現有對象綁定到複選框以推送和拼接新值

的行使對象看起來是這樣的(其他一些值已被用於簡單刪除):

{ 
    "exerciseName": "Squat", 
    "Params": [{ 
     "param": "Sets", 
     "childParam" : "" 
     }, { 
     "param": "Reps", 
     "childParam" : "" 
    }] 
} 

我想給用戶提供了許多的複選框來快速添加/刪除PARAMS /從這個練習。

options數組目前看起來是這樣的:

$scope.availibleParams = [{ 
    "param": "Reps", 
    "childParam": "" 
}, { 
    "param": "Tempo", 
    "childParam": "" 
}, { 
    "param": "Sets", 
    "childParam": "" 
}, { 
    "param": "Weight", 
    "childParam": "" 
}, { 
    "param": "Rest", 
    "childParam": "" 
}]; 

所以在這個特定的例子,當運動負荷的複選框的param「銷售代表」和「集」將已籤,因爲它們存在於主動練習。

在檢查新參數時,應將其推入activeExercise數組中,反之亦然,如果未選中,應將其移除。

除此之外,我還需要能夠添加自定義參數。如果該選項存在於上面的列表中,則這些用戶可以添加一次。一旦他們添加了自定義參數,它就會顯示在練習和複選框列表中。

我已經成功地嘗試找到activeExercise.Params陣列,並將其設置爲ng-repeat這些選項,但綁定到此並在檢查和取消選中時運行所需的添加/刪除功能對我的IQ來說太困難了!

我在CodePen上創建了一個Pen以顯示我設法到達的位置。

此外,我不知道該發表什麼標題,請隨時糾正我。

+0

問題是缺少HTML和控制器代碼。尋求調試幫助的問題(「爲什麼這個代碼不工作?」)必須包含所需的行爲,特定的問題或錯誤以及在問題本身中重現**的最短代碼。**沒有明確問題陳述的問題對其他讀者沒有用處。請參閱:[如何創建最小,完整和可驗證示例。](http://stackoverflow.com/help/mcve) – georgeawg

+0

您可以使用問題中提供的筆。 –

+0

控制器和HTML在筆中...我的目標是簡潔。 – Taylorsuk

回答

0

我不確定,但也許你需要這個?

我有一個數組參數,並有物業isActive

$scope.availibleParams = [{ 
    "param": "Reps", 
    "isActive": true, 
    "childParam": "" 
}, ... 

https://codepen.io/anon/pen/qmdBeE?editors=1010

更復雜的情況:

我們仍然有isActive財產,但我們檢查onchange事件對於實際發生的事情,所以

1)我們初始化我們的主動練習,並將可用參數設置爲活動狀態,如果它們出現在$ scope.activeExercise中。看看這個函數:

scope.initActiveExercices() 

2)我們同步定製和在$ scope.updateActiveExercices()提供練習。

首先我們清除$ scope。activeExercise陣列

然後我們可以迭代和自訂參數數組過來,看看isActive屬性,如果其真的,我們推到$ scope.activeExercise陣列

這就是它。

這裏是新copeden example

+0

謝謝,這有幫助,但我將不得不運行一個循環,以便每次在函數中添加這些'isActive'值,因爲它們不存在於原始數據中,這在整個數據庫中是不可能改變的。 – Taylorsuk

+0

您可以爲所有自定義創建的參數創建如isCutom:true的附加屬性 – Leguest

+0

對於正在創建的參數很簡單,但是有4000個現有練習沒有ant'isActive'屬性,因此需要在初始化頁面時添加或一些東西。 – Taylorsuk