我想基于我在angularjs引导程序中定义的预设常数来更改与控制器关联的templateUrl。我不知道该如何更改。我已经尝试了UrlRouteProvider,但无法弄清楚如何从文件系统中提取html。我被卡在templateUrl上。
在下面的代码中,输出首先显示“确实将svcc传递到了第一个函数的console.out中,但是在templateUrl定义函数中,CONFIG未定义。
我愿意采取其他方式来做到这一点。
var app = angular.module('svccApp', [
'ui.router'
]);
var myConstant = {};
myConstant.codeCampType = "svcc";
app.constant("CONFIG", myConstant);
app.config(['$stateProvider', '$urlRouterProvider','CONFIG',
function ($stateProvider, $urlRouterProvider,CONFIG) {
console.log(CONFIG.codeCampType);
$stateProvider
.state('home', {
url: '/home',
//templateUrl: 'index5templateA.html', (THIS WORKS)
templateUrl: function(CONFIG) {
console.log('in templateUrl ' + CONFIG.codeCampType);
if (CONFIG.codeCampType === "svcc") {
return 'index5templateA.html';
} else {
return 'index5templateB.html';
}
},
controller: function ($state) {
}
});
}]);
我在这里创建了一个插件,
您几乎就在那儿,只是语法是 'templateProvider'
:
.state('home', {
url: '/home',
//templateUrl: 'index5templateA.html', (THIS WORKS)
// templateUrl: function(CONFIG) {
templateProvider: function(CONFIG) {
...
doc的片段:
TemplateUrl
…templateUrl
也可以是返回url的函数。 它采用一个预设参数stateParams
,该参数不会被注入。TemplateProvider
或者您可以使用 模板提供程序 函数,该函数 可以被注入,可以访问locals 并且必须返回模板HTML,如下所示:
因此,在我们的例子中,将是实现:
$stateProvider
.state('home', {
url: '/home',
//templateUrl: 'index5templateA.html', (THIS WORKS)
templateProvider: function(CONFIG, $http, $templateCache) {
console.log('in templateUrl ' + CONFIG.codeCampType);
var templateName = 'index5templateB.html';
if (CONFIG.codeCampType === "svcc") {
templateName = 'index5templateA.html';
}
var tpl = $templateCache.get(templateName);
if(tpl){
return tpl;
}
return $http
.get(templateName)
.then(function(response){
tpl = response.data
$templateCache.put(templateName, tpl);
return tpl;
});
},
controller: function ($state) {
}
});
在这里检查例子
问题内容: 谈话很便宜,请先显示我的代码: HTML: 指示: }); 控制器: 现在工作了,当我单击加号图标时,浏览器控制台输出“添加”。 但我想将控制器动态设置为指令,如下所示: HTML: 控制器: 指令喜欢: 如何实现我的目标?感谢您的回答! 问题答案: 现在可以使用AngularJS。在指令中你只需要添加两个新的属性叫 ,财产,也正好在这里需要。 指令中要注意的重要事项 设置指令动态控制
我有一个,我想在点击时放大它的宽度。我设置了约束,并确保左侧的约束优先级低于我试图在右侧设置动画的约束优先级。 这是我试图使用的代码。 这是可行的,但似乎只是瞬间发生,似乎没有任何运动。我试着将其设置为10秒,以确保没有遗漏任何内容,但我得到了相同的结果。 是我控制的从IB拖到我的类中的约束的名称。
我实现了一个API,它将根据客户的请求返回JSON和XML(即接受请求中的头)。它像预期的那样工作。 这里的问题是:即使用户发送接受标头,在一些特殊情况下(即业务逻辑),我们也需要动态发送响应内容类型。我试图使用HttpHeaders实现它,但它不起作用。 我将HTTP状态设置为200,但响应为错误,即, 如何解决这个问题?
问题内容: 我目前有一个内置路由的AngularJS应用,它与静态属性分配完美配合。但是我真正想做的是为控制器分配不同的路由: 我想做的是在这里对我的财产做同样的事情,例如: 但似乎我得到一个错误,说找不到 所以有什么办法可以在路由配置中动态加载控制器功能名称? 问题答案: 使用angular ui-router可以做到这一点。 ui-router允许您指定“ controllerProvider
问题内容: 我有一个开发和生产环境,其中我的URL不同: 生产: 发展: 我知道我可以在AngularJS中使用 但这对我没有帮助。在加载AngularJS应用程序之前,我先获取一个配置文件(在app.js中,使用以下语句,该语句读取具有以下环境的变量: 有没有一种方法可以基于AngularJS中的配置文件(可能带有.htaccess)来动态设置基本URL? 尝试1: 尝试通过获取配置,并通过ng
英文原文: http://emberjs.com/guides/routing/setting-up-a-controller/ URL的改变同时也可能改变显示的模板。而模板只有当其搭载了需要呈现的信息才有用。 在Ember.js中,模板从控制器中获取需要呈现的信息。 内置的两个控制器Ember.ObjectController和Ember.ArrayController,使控制器可以非常方便的呈