2014-02-11 69 views
0

我想擺脫一堆使用ng-repeat的重複div。AngularJS ng-repeat設置屬性

<!-- I have 21 of these --> 
    <div class="table-row"> 
    <span class="glyphicon glyphicon-wrench"></span> 
    <label>Chloride</label> 
    <input type="range" min="700" max="1200" ng-model="chlorideSlider"/> 
    <input type="text" class="val" ng-model="chloride"/> 
    </div> 

    <!-- I'd like to use ng-repeat to create them --> 
    <div class="table-row" ng-repeat="item in sliderItems.items"> 
    <span class="glyphicon glyphicon-pencil"></span> 
    <label>{{ item.label }}</label> 
    <input type="range" min="item.min" max="item.max" ng-model="item.slider"/> 
    <input type="text" class="val" ng-model="item.model"/> 
    </div> 

這是數據:

$scope.sliderItems = { 'items' : [ 
    {'label' : 'WBC', 'min' : 0, 'max' : 600, 'slider' : $scope.wbc, 'model' : $scope.wbc, 'tr' : 'wbc_tr' }, 
    {'label' : 'Respiration', 'min' : 0, 'max' : 60, 'slider' : $scope.resp, 'model' : $scope.resp, 'tr' : 'wbc_tr' } 
    ]}; 

最小值和最大值不會在所有的工作。模型顯示正確的值,直到它們改變並且我嘗試更改只讀值錯誤。

+1

你想做些什麼?它不清楚.. :( –

+0

我想做的事情就像在第二個div。但是,這是不正常工作,如上所述,謝謝。 –

回答

0

試試這個

<div class="table-row" ng-repeat="item in sliderItems.items"> 
    <span class="glyphicon glyphicon-pencil"></span> 
    <label>{{ item.label }}</label> 
    <input type="range" min="{{item.min}}" max="{{item.max}}" ng-model="item.slider"/> 
    <input type="text" class="val" ng-model="item.model"/> 
    </div> 
2

最小值和最大值需要被包裹在{{ }},因爲他們是沒有棱角的指令,因此不計算表達式。因此,這將成爲:

<div class="table-row" ng-repeat="item in sliderItems.items"> 
    <span class="glyphicon glyphicon-pencil"></span> 
    <label>{{ item.label }}</label> 
    <input type="range" min="{{item.min}}" max="{{item.max}}" ng-model="item.slider"/> 
    <input type="text" class="val" ng-model="item.model"/> 
    </div> 
+0

現在適用於最大最小值但是,該值設置爲模型,但那麼從不更新模型的時候或者當你移動範圍上的滑塊時 –

+0

你可能想要考慮爲這類事情創建一個自定義指令,否則有一個「onSliderChange」類型的事件可以掛鉤新的價值? – simonlchilds

+0

讓我困惑的是 works and 只適用於init,但不會更新。謝謝 –

0

你不能設置一個模型的方式。試試這個:

<div class="table-row" ng-repeat="item in sliderItems.items"> 
<span class="glyphicon glyphicon-pencil"></span> 
<label>{{ item.label }}</label> 
<input type="range" min="{{item.min}}" max="{{item.max}}" ng-change="setSlider($index)"/> 
<input type="text" class="val" ng-change="setModel($index)"/> 
</div> 

裏面你的控制器,你將需要類似的這些功能:

$scope.setSlider = function(selectedSlider){ 
    $scope.mySlider = items[selectedSlider].slider; 
} 

$scope.setModel = function(selectedModel){ 
    $scope.myModel = items[selectedModel].model; 
} 
+0

它不適用於'setModel({{item.model}})' - 您需要將'{{}}'從' item.model'。 – simonlchilds

+0

Ew ...好點...對他們有點過分熱心。編輯出來。謝謝。 – MBielski

+0

這給了我這個錯誤:Expression'setSlider(item.slider)'是不可分配的。元素:http://bit.ly/1bRXaEb –