2016-04-10 25 views
0

Eğer bariz bir şey kaçırıyorsam özür dilerim. Benzer sorunlara baktım ama bu genellikle {{...}}'u kullanan birisine düşüyor, ancak bu durumda neyin yanlış olduğunu göremiyorum.Angular neden {{string}} ifadesini ({string}) bir ifade olarak ayrıştırmaya çalışır?

Angular otomatik tamamlama/yazım denetimi gerçekleştirmeye çalışıyorum (angucomplete-alt) ama tuhaf bir sorunla karşılaştım.

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)

garip bir şey yönergesi özel bir şey yapıyor gibi görünen olmamasıdır: yazar açıklar ama Açısal konsolunda aşağıdaki hatayı atar gibi tam uygulamaya konmuştur. Yer tutucu placeholder: '@' olarak geçirilir ve yönerge şablonunda placeholder="{{placeholder}}" olarak verilir. Bildiğim kadarıyla doğru.

Ana uygulama modülüme bağımlılık olarak angucomplete-alt bildirdim. Bu otomatik tamamlama (Bence nasıl ayarlandığını benim denetleyicisi veri bağlamak için değiştirildi selected-object ve local-data ile yazarlar ilk demo tam bir kopyası:

<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> 

Ve bu benim denetleyicisi ilgili parçasıdır:

Ben Açısal 1.4.6 (yazar kendi demo sayfasında kullandığı versiyon) ama aynı hataya geri düşen çalıştım
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 } 
    ]; 
} 

devam etmektedir.

denemek ve single olarak {{placeholder}} ayrıştırmak Eğik neden olan şey nedir

Sadece dizgeyi çıktılamak yerine kaşlı ayraç ifadesi?

+1

Gerçek kodu, olay daha iyi bir JSFiddle gönder – Max

+0

Bir JSFiddle (bazı nedenlerle çalışmayacaktır, hatta temel Açısal kavramlarla bile). Ne var ki, çok basit olmasına rağmen soruyu bazı kodlarla güncelleyeceğim. –

+0

Sadece bir gözlem, ancak bu kütüphane oldukça eski. Demo sayfası [burada] (http://darylrowland.github.io/angucomplete/) kullanıyor: AngularJS v1.2.9 Akılda tutulması gereken bir şey olabilir. – segFault

cevap

0

Bu sorunu çözdüm. Bir üçüncü taraf modülü, $templateCache şablonlarının nasıl yükleneceğini etkiliyordu ve ya angucomplete-alt modülünde sağlanandan farklı bir şablon yüklemeye çalışıyordu veya şablonun nasıl ayrıştırıldığını etkiliyordu.

Üçüncü taraf modülünü kaldırmak bu sorunu çözüyor.

İlgili konular