2014-10-07 75 views
-2

我们正在开发一个基于角度js的工作灯应用程序。所以角js有一个“指令”,它从html文件返回一段HTML代码并注入main.html我们在这里观察到的是,每当有一个空格/注释等在HTML标签元素之外时,它会抛出错误代码为“https://docs.angularjs.org/error/ $ compile/tplrt” 这是一个已知问题并记录在角度文档中。Worklight with Angular js

但奇怪的是,我们从WL 6.1开始开发,从未遇到过这个问题。一旦我们迁移到WL 6.2,就会弹出此错误。我想到的其中一件事是默认的jquery lib(冲突),它与worklight捆绑在一起。但我试图用较旧的jquery版本替换(直到1.9.1)并且它不起作用。任何想法/建议为什么这可能会发生在6.2?

PS:此问题仅在浏览器中出现,而不在仿真器/设备中。

的index.html

<body style="display: none;"> 
<!--application UI goes here--> 
<shell></shell> 
</body> 
<script src="js/lib/angular.js"></script> 
<script src="js/shell.js"></script> 

main.js

// Common initialization code goes here 
angular.bootstrap(document, ['shell']); 

shell.html

<div id="topZone" app-view-segment="0"></div>[Insert \n here] 

shell.js

angular.module('shell',[]); 

angular.module('shell').directive('shell', [ 

function() { 
    console.log('shell Directive'); 
    return { 
     restrict: 'EA', 
     replace: true, 
     templateUrl: 'views/shell.html' 
    }; 
}]); 
+0

你有什么更实质的展示吗?提供复制项目或重现步骤。 – 2014-10-07 07:02:46

+0

嗨伊丹,编辑我的问题。 – 2014-10-07 08:23:11

回答

1

我不知道它为什么在6.1中工作,它不应该有:)
您应该使用最新版本的6.2,因为预览中有一些错误。
In the angularjs site很清楚,你需要拥有的一切包在一个HTML元素的状态:

当指令与模板(或templateUrl)和 在替换模式声明,模板必须有一个根元件。 是,模板属性的文本或由 templateUrl引用的内容必须包含在单个html元素中。例如, 例如,<p>blah <em>blah</em> blah</p>而不是简单地等于 <em>blah</em>等等。否则,替换操作将导致单个元素(指令)被替换为多个元素或节点,这在实践中不被支持,并且通常不需要 。

+0

我们已经迁移到最新版本的WL。问题仍然存在。在这里提到shell.html,如果我在div标签后面删除[\ n或whitespaces],它就会起作用。 – 2014-10-07 09:22:36

+0

\ n或whitespace是DOM中的新文本节点,所以上面写的内容仍然有效。 – 2014-10-07 12:53:36