Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么Angular会尝试将{{string}}解析为表达式({string})?_Javascript_Angularjs - Fatal编程技术网

Javascript 为什么Angular会尝试将{{string}}解析为表达式({string})?

Javascript 为什么Angular会尝试将{{string}}解析为表达式({string})?,javascript,angularjs,Javascript,Angularjs,如果我遗漏了一些明显的东西,我会道歉。我已经研究过类似的问题,但这通常是由于某人使用了{{…}}而他们不应该这样做,但我就是看不出在这个例子中有什么错误 我试图实现一个角度自动完成/typeahead(),但我遇到了一个特殊的问题。它的实现与作者描述的完全相同,但Angular在控制台中抛出以下错误: Error:[$parse:syntax]语法错误:从[{placeholder}}]开始的表达式[{{placeholder}}]第2列的标记“{”无效键。 http://errors.angu

如果我遗漏了一些明显的东西,我会道歉。我已经研究过类似的问题,但这通常是由于某人使用了
{{…}}
而他们不应该这样做,但我就是看不出在这个例子中有什么错误

我试图实现一个角度自动完成/typeahead(),但我遇到了一个特殊的问题。它的实现与作者描述的完全相同,但Angular在控制台中抛出以下错误:

Error:[$parse:syntax]语法错误:从[{placeholder}}]开始的表达式[{{placeholder}}]第2列的标记“{”无效键。
http://errors.angularjs.org/1.5.3/$parse/syntax?p0=%7B&p1=无效的%20key&p2=2&p3=%7B%7B占位符%7D%7D&p4=%7B占位符%7D%7D
角度1.5.3.min.js:68
在Object.AST.throwerr(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.乘法(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)
在Object.AST.logicalAND(angular.1.5.3.min.js:13839)

奇怪的是,该指令似乎没有做任何特殊的事情。占位符作为
Placeholder:'@'
传入,然后作为
Placeholder=“{{Placeholder}}”
输出到指令模板中。据我所知,那是正确的

我已经声明了
alt
作为我的主应用程序模块的依赖项。这是在我的视图中设置自动完成的方式(作者第一次演示的精确副本,
选定对象
本地数据
更改为绑定来自我的控制器的数据:

<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 }
    ];
}
我确实尝试回到Angular 1.4.6(作者在演示页面上使用的版本),但同样的错误仍然存在


是什么导致Angular尝试解析
{{placeholder}
作为一个大括号表达式而不是仅仅输出字符串?

我现在已经解决了这个问题。第三方模块正在影响
$templateCache
加载模板的方式,它或者试图加载与alt模块中提供的模板不同的模板,或者正在影响模板的加载方式正如解析的那样


删除第三方模块可解决此问题。

发布实际代码,事件更好地发布JSFIDLE我无法发布JSFIDLE(由于某些原因,即使使用基本的角度概念,它也无法工作)。我会用一些代码更新这个问题,虽然我的问题很简单。只是一个观察,但这个库相当旧。演示页面使用:AngularJS v1.2.9可能需要记住。@sebastianForsberg这是一个完整的问题,而我的问题特别提到(和链接到)angucomplete alt-一个fork,因为原来的不再维护。我已经解决了这个问题。