2016-04-10 82 views
0

道歉,如果我失去了明顯的東西。我已經看過類似的問題,但這通常是使用{{...}}的地方,但他們不應該這樣做,但在這種情況下我看不出什麼問題。Angular爲什麼會嘗試將{{string}}解析爲表達式({string})?

我試圖實現一個角度自動完成/鍵入(angucomplete-alt),但我遇到了一個奇怪的問題。已實現準確爲筆者介紹,但角投在控制檯以下錯誤:

Error: [$parse:syntax] Syntax Error: Token '{' invalid key at column 2 of the expression [{{placeholder}}] starting at [{placeholder}}]. http://errors.angularjs.org/1.5.3/$parse/syntax?p0=%7B&p1=invalid%20key&p2=2&p3=%7B%7Bplaceholder%7D%7D&p4=%7Bplaceholder%7D%7D at angular.1.5.3.min.js:68 at Object.AST.throwError (angular.1.5.3.min.js:14006) at Object.AST.object (angular.1.5.3.min.js:13993) at Object.AST.primary (angular.1.5.3.min.js:13899) at Object.AST.unary (angular.1.5.3.min.js:13887) at Object.AST.multiplicative (angular.1.5.3.min.js:13874) at Object.AST.additive (angular.1.5.3.min.js:13865) at Object.AST.relational (angular.1.5.3.min.js:13856) at Object.AST.equality (angular.1.5.3.min.js:13847) at Object.AST.logicalAND (angular.1.5.3.min.js:13839)

奇怪的是,該指令似乎沒有做什麼特別的東西。佔位符作爲placeholder: '@'傳入,然後在指令模板中輸出爲placeholder="{{placeholder}}"。據我所知,這是正確的。

我宣佈angucomplete-alt作爲我的主要應用程序模塊的依賴項。這是自動完成的設置方式在我看來(作者首先演示的精確副本與selected-objectlocal-data改爲從我的控制器將數據綁定:

<div ng-controller="RosterController as roster"> 
    <div angucomplete-alt id="ex1" 
     placeholder="Search crew" 
     maxlength="50" 
     pause="100" 
     selected-object="roster.selectedCrew" 
     local-data="roster.crew" 
     search-fields="name" 
     title-field="name" 
     minlength="1" 
     input-class="form-control form-control-small" 
     match-class="highlight"> 
    </div> 
</div> 

這是我控制的相關部分:

angular 
    .module('aa.roster') 
    .controller('RosterController', RosterController); 

function RosterController() { 
    var vm = this; 
    vm.crew = [ 
     { name: 'abc', id: 1 }, 
     { name: 'def', id: 2 }, 
     { name: 'ghi', id: 3 } 
    ]; 
} 

我曾嘗試回落到角1.4.6(筆者使用的演示頁上的版本),但同樣的錯誤仍然存​​在。

是什麼原因造成角,試圖解析{{placeholder}}作爲一個單一的大括號表達,而不是隻輸出字符串?

+1

發佈實際代碼,事件更好JSFiddle – Max

+0

我無法發佈JSFiddle(出於某種原因,即使使用基本的Angular概念,它也無法工作)。我會用一些代碼更新這個問題,儘管我擁有的很簡單。 –

+0

只是一個觀察,但該圖書館是相當古老。演示頁面[here](http://darylrowland.github.io/angucomplete/)正在使用:AngularJS v1.2.9 可能需要記住。 – segFault

回答

0

我現在已經解決了這個問題。第三方模塊正在影響$templateCache如何加載模板,它正在嘗試加載與angucomplete-alt模塊中提供的模板不同的模板,或者影響了模板的解析方式。

刪除第三方模塊可解決此問題。

相關問題