小小的简短:我正在使用AngularJs和Meteor + Blade,而不使用Meteor_angularjs包用于meteor。 Blade在服务器中构造页面的主体,然后我在客户端手动引导角度。
Blade在Template['template_name']
下提供了模板文件,因此可以在客户端轻松呈现这些文件。我想做点什么:
div(ng-include='content.blade')
// HTML => <div ng-include='content.blade'></div>
并以某种方式使其发挥作用 为了保持兼容性而不是创建新的指令,我认为可以截取XHR请求对静态模板的角度设置并添加条件
if(URI ends with '.blade') then
name <- strip '.blade' in URI
return Template[name]()
应返回该模板的已编译HTML。
更新
巧合的是,我遇到了$ templateCache,现在我认为这是要走的路
我创建了一个'ngMeteor'模块,我将用它来进行流星角积分。
angular.module 'ngMeteor',[], ->
throw 'Meteor object undefined.' unless Meteor? # Is it fine to put here?
angular.module('ngMeteor.blade',['ngMeteor']).
run ($templateCache) ->
$templateCache.put "#{name}.blade", render() for own name, render of Template
在我的应用中:
angular.element(document).ready ->
angular.bootstrap document, ['app']
app = angular.module 'app', ['ngMeteor.blade'], ->
app.controller 'mainCtrl', ($scope,$templateCache) ->
$scope.content = $templateCache.get "content.blade" # Works!!
刀片(body.blade):
#main(ng-controller='mainCtrl') {{ content }}
现在它可以工作了,我可以在注入$ templateCache并根据其名称设置模板后从控制器获取渲染模板,但ng-include
仍然无效。
答案 0 :(得分:0)
我之前在问题中的更新实际上是正确的答案,因为div(ng-include="'content.blade'")
而导致ngInclude对我不起作用...是的,内部引用!就像我第N次遇到那个问题一样
简历中的答案是:
angular.module('blade').
run ($templateCache) ->
$templateCache.put "#{name}.blade", render() for own name, render of Template
模板是流星全局变量,其中blade将存储准备渲染的模板,然后使用$ templateCache我将渲染的模板与相应的名称/ ID放在一起,这样Angular可以使用它们。
编辑:基于这个问题,我为流星中的无支撑角度开发创建了一个流星包ng-meteor。