2015-10-01 25 views
5

我正在嘗試使用Angularjs多選到我的項目中。設置角度js的多選isteven中的值

下面的html是我的多選div。

<div  
       multi-select 
       input-model="marks" 
       output-model="filters.marks" 
       button-label="name" 
       item-label="name" 
       tick-property="ticked" 
       selection-mode="multiple" 
       helper-elements="all none filter" 
       on-item-click="fClick(data)" 
       default-label="Select marks" 
       max-labels="1" 
       max-height="250px" 

      > 
      </div> 

我知道我可以在控制器中使用$ scope.marks = data。

但問題是$ scope.marks是一個全局變量,我無法改變。

有什麼辦法可以在不使用輸入模型的情況下設置多選中的值嗎?

+0

你能澄清些嗎? 「標記」應該來自哪裏?你爲什麼不能改變它? –

+0

@Esteban $ scope.marks是我的控制器中的一個全局變量。但我想在我的控制器中動態設置多重選擇的值。但是如果我在控制器中動態設置它,原來的全局變量將取代 – Harini

回答

1

好了,在這裏做了一些測試,我可以得到的東西與multiselecting:

var languages = ["C#", "Java", "Ruby", "Go", "C++", "Pascal", "Assembly"]; //The items. 
 

 
var myApp = angular.module('myApp', []); 
 

 
myApp.controller('MyCtrl', function($scope) { 
 
    $scope.marks = {}; 
 
    for (lang in languages) { 
 
    $scope.marks[lang] = { 
 
     name: languages[lang], 
 
     marked: false 
 
    }; 
 
    } 
 

 
    $scope.marks[3].marked = true; //mark "Go" and "C++" by default. 
 
    $scope.marks[4].marked = true; 
 

 
    $scope.theMarkedOnes = function() { 
 
    outp = ""; 
 
    for (m in $scope.marks) { 
 
     if ($scope.marks[m].marked) 
 
     outp += $scope.marks[m].name + ", "; 
 
    } 
 
    if (outp.length == 0) { 
 
     return "(none)"; 
 
    } else { 
 
     return outp.substr(0, outp.length - 2); 
 
    } 
 
    } 
 
    $scope.setMark = function(markone) { 
 
    markone.marked = !markone.marked; 
 
    } 
 

 
})
*, 
 
*:before, 
 
*:after { 
 
    box-sizing: border-box; 
 
} 
 
body { 
 
    font-family: sans-serif; 
 
    font-size: 0.7em; 
 
} 
 
::-webkit-scrollbar { 
 
    width: 7px; 
 
} 
 
::-webkit-scrollbar-track { 
 
    -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); 
 
    border-radius: 10px; 
 
} 
 
::-webkit-scrollbar-thumb { 
 
    border-radius: 10px; 
 
    -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.5); 
 
} 
 
.multiselector { 
 
    background-color: #CCCCCC; 
 
    overflow-y: scroll; 
 
    width: 17em; 
 
    height: 13em; 
 
    border-radius: 0.7em; 
 
} 
 
.multiselector .item { 
 
    cursor: pointer; 
 
    padding: 0.2em 0.3em 0.2em 0.0em; 
 
} 
 
.itemtrue { 
 
    background-color: #9999AA; 
 
} 
 
.msshow { 
 
    background-color: #cccccc; 
 
    border-radius: 0.7em; 
 
    margin-top: 1em; 
 
    padding: 0.6em; 
 
    width: 17em; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="myApp" ng-controller="MyCtrl"> 
 
    <div class="multiselector"> 
 
    <div ng-repeat="mark in marks" class="item item{{mark.marked}}" ng-click="setMark(mark)">{{mark.name}}</div> 
 
    </div> 
 

 
    <div class="msshow"> <b>Selected:</b> {{theMarkedOnes()}}</div> 
 
</div>

+0

謝謝@Diego For你的答案。我的項目已經在使用我不應該改變的多重選擇。 – Harini