来自控制器的指令模板
Directive template from controller
我正试图让我的指令加载到一个基于它的控制器变量的模板中。我在这里看到的其他问题依赖于一个字符串被传递到指令中,而不是从控制器中获取它。
指令:
import {LanguageController} from "./language.controller.ts";
export class LanguageSelectDirective {
static NAME: string = "selectLanguage";
static factory(): ng.IDirective {
let directive = {
restrict: "E",
link: function() {},
templateUrl: function(elem, attrs){
return "./" + attrs.language + "/language.html"
},
scope: {
language: "@"
},
controller: LanguageController,
controllerAs: "lc",
bindToController: true
};
return directive;
}
}
控制器:
export class LanguageController{
private selectedLanguage: String;
//More stuff
}
模板:
<select-language ng-hide="authenticated" language="{{lc.selectedLanguage}}"></select-language>
我一直看到的错误是:
GET http://localhost:3000/%7B%7Blc.selectedLanguage%7D%7D/language.html 404 (Not Found)
如何强制它将语言参数计算为控制器变量,而不是文字字符串?
尝试
<select-language ng-hide="authenticated" language="lc.selectedLanguage"></select-language>
你不需要{{}}
大括号
这是一个使用角度1.4的plnkr:http://plnkr.co/edit/HOjKKm
这是指令函数:
let directive={
return {
restrict: 'E',
scope: {
language: '=', //= not @ ensures the model value is interpreted
'content': '=' //we are binding to an object
},
template: '<ng-include src="getTemplateUrl()"></ng-include>',
controller: function($scope){
$scope.getTemplateUrl=function(){
return $scope.language+'_language.html';
}
}
}
}
不要在指令定义中使用{{}}
,也不要在作用域定义中使用'='。
<select-language ng-hide="authenticated" language="lc.selectedLanguage"></select-language>
相关文章:
- 在指令控制器中使用$attrs时出现问题
- Angular,从指令控制器中的控制器触发函数
- 角度指令控制器:参数不是函数,未定义
- 如何将值传递到角度中的指令控制器
- angularjs+ui.router:指令控制器和链接函数之间的不同行为
- 如何使用角度指令控制器动态单击复选框
- 如何从父指令/控制器访问指令范围
- 角度指令 - 需要从指令控制器访问所需的控制器
- 指令链接中的范围变量不会更新到指令控制器使用 Angular 读取它时
- 从链接函数修改指令控制器变量
- 监视指令控制器不工作
- Angular js 指令控制器访问范围属性,但返回未定义
- 指令控制器和普通控制器之间的区别
- 角度指令链接函数中的范围是否与角度指令控制器中的$scope相同
- AngularJS :如何从相同的指令控制器访问指令范围
- 角度“这个”在指令控制器内不起作用
- 列出 AngularJS 模块中声明的指令/控制器
- 角度指令控制器单元测试使用窗口.确认
- 从指令控制器到控制器的角度共享数据
- UI 引导程序自定义指令控制器不是一个函数