2012-12-03 82 views
0
語法錯誤

我試圖使用字符串連接在在ng-repeat一個ui-select2與uiSelect2

<select ui-select2 ng-model="selected2" style="width:300px;"> 
     <option ng-repeat="item in data[it + 'ems']" selected 
       value="{{item}}">{{item}}</option> 
    </select> 

(這是一個簡單的例子,但字符串連接是必要的代碼重用。)

它正常工作正常select。然而,uiSelect2產生一個錯誤:

Error: Syntax Error: Token ']' is an unexpected token at column 6 of the expression ['ems']] starting at []]. 
    at Error (<anonymous>) 
    at throwError (http://code.angularjs.org/angular-1.0.1.js:5830:11) 
    at parser (http://code.angularjs.org/angular-1.0.1.js:5824:5) 
    at http://code.angularjs.org/angular-1.0.1.js:6387:29 
    at compileToFn (http://code.angularjs.org/angular-1.0.1.js:8040:16) 
    at Object.Scope.$watch (http://code.angularjs.org/angular-1.0.1.js:7547:19) 
    at http://angular-ui.github.com/angular-ui/build/angular-ui.js:911:19 
    at nodeLinkFn (http://code.angularjs.org/angular-1.0.1.js:4223:13) 
    at compositeLinkFn (http://code.angularjs.org/angular-1.0.1.js:3838:14) 
    at compositeLinkFn (http://code.angularjs.org/angular-1.0.1.js:3841:12) <select ui-select2="" ng-model="selected2" style="width:300px;" class="ng-pristine ng-valid"> 

轉載於這個fiddle

我在這裏做錯了什麼?

回答

1

我懷疑這是因爲select-ui有一個孤立的範圍,ng-repeat也是這樣,它會讓你的it變量超出ng-repeat範圍。

我建議使用ng-options的選擇無論如何..(工作,大概是因爲它阻止了範圍界定問題,我提到過):

<select ui-select2 ng-model="selected2" style="width:300px;" 
    ng-options="item for item in data[it + 'ems']"></select> 
+0

這是一個很好的點。但是,我需要它是一個'ng-repeat',所以我可以訪問'$ first','$ last'和'$ index'。有什麼辦法可以讓它以這種方式工作嗎? –

+0

如果你需要訪問這些,你可以使用'$ parent'來玩'ng-repeat'上面的範圍的屬性。所以就像'{{$ parent.it}}'或其他。要小心,如果你經常使用'$ parent',那麼將代碼變成難以維護的代碼是很容易的。 –

+0

但是爲什麼字符串連接會影響「it」是否在範圍內? –