2014-12-23 36 views
1

我有一個select元素作爲自定義指令中的模板。它將一個數組作爲參數,但它不被解析。AngularJS不解析模板參數

directive('myFilteringselectelement', function(){ 
    return { 
     restrict:'E', 
     template: '<span>{{filters[0][1]}}{{filters[0]}}{{selectfiltercount}}{{filters[selectfiltercount]}}</span><select send-message-select ng-model="myfilter" ng-options="filter.name for filter in {{filters[selectfiltercount]}}>"</select>' 
    } 
}). 

二維數組「過濾器」被定義爲:

$scope.filters = [ [{name: 'iron'}, {name: 'tin'}, {name: 'copper'}], 
        [{name: 'type1'}, {name: 'type2'}, {name: 'type3'}], 
        [{name: 'road1'}, {name: 'road2'}, {name: 'road3'}], 
        [{name: 'gwa1'}, {name: 'gwa2'}, {name: 'gwa3'}], 
        [{name: 'area1'}, {name: 'area2'}, {name: 'area3'}] 
]; 

模板中的跨度是出於測試目的,它工作得很好:

{{filters[0][1]}} 
{{filters[0]}} 
{{selectfiltercount}} 
{{filters[selectfiltercount]}} 

但選擇元素ISN效果不好:

<select send-message-select ng-model="myfilter" ng-options="filter.name for filter in {{filters[selectfiltercount]}}>"</select> 

https://docs.angularjs.org/api/ng/directive/select中解釋了ngOptions中的數組參數將起作用。它工作時,我使用的過濾器陣列與一名維例如爲:

$scope.filters = [{name: 'iron'}, {name: 'tin'}, {name: 'copper'}]; 

但我想用2維數組,以便使用多個選擇指令。當有多個選擇指令時,所有選擇選項都與一維數組相同(最新賦值...)

可能是未解析它的原因是什麼?有任何想法嗎?

乾杯, 阿爾卑斯

這裏是鉻拋出的錯誤日誌:

Error: [$parse:syntax] http://errors.angularjs.org/1.3.8/$parse/syntax?p0=undefined&p1=not%20a%20primary%20expression&p2=null&p3=%5B%7B%22name%22%3ANaNron%22%7D%2C%7B%22name%22%3A%22tin%22%7D%2C%7B%22name%22%3A%copper%22%7D%5D%3E&p4=%5B%7B%22name%22%3A%iron%22%7D%2C%7B%22name%22%3A%22tin%22%7D%2C%7B%22name%22%3A%copper%22%7D%5D%3E 
    at Error (native) 
    at http://1x7.0.0.1:8000/app/components/javascripts/angular.min.js:6:416 
    at hb.throwError (http://1x7.0.0.1:8000/app/components/javascripts/angular.min.js:190:254) 
    at hb.primary (http://1x7.0.0.1:8000/app/components/javascripts/angular.min.js:190:6) 
    at hb.unary (http://1x7.0.0.1:8000/app/components/javascripts/angular.min.js:197:82) 
    at hb.multiplicative (http://1x7.0.0.1:8000/app/components/javascripts/angular.min.js:196:324) 
    at hb.additive (http://1x7.0.0.1:8000/app/components/javascripts/angular.min.js:196:182) 
    at hb.relational (http://1x7.0.0.1:8000/app/components/javascripts/angular.min.js:196:125) 
    at hb.equality (http://1x7.0.0.1:8000/app/components/javascripts/angular.min.js:195:418) 
    at hb.logicalAND (http://1x7.0.0.1:8000/app/components/javascripts/angular.min.js:195:294) angular.min.js:103 
    (anonymous function) angular.min.js:103 
    (anonymous function) angular.min.js:76 
    $ angular.min.js:70 
    v angular.min.js:59 
    g angular.min.js:52 
    v angular.min.js:59 
    g angular.min.js:52 
    (anonymous function) angular.min.js:51 
    (anonymous function) filter.js:96 
    n.event.dispatch jquery-2.1.1.min.js:3 
    r.handle jquery-2.1.1.min.js:3 

回答

0

NG選項並不需要插值。結尾的引號似乎也是不正確的。你可以嘗試

ng-options="filter.name for filter in filters[selectfiltercount]"

+0

謝謝你,解決了這個問題:) – alpalp1977