从AngularJS中的指令模板访问内联控制器变量
Acessing inline-controller variable from directive template in AngularJS
这是一个代表我的问题的小提琴:https://jsfiddle.net/m9t7ew8j/1/
代码的重要部分如下:
.directive('firstDirective', [function () {
return {
restrict: 'E',
template: '<div>This is a directive.
Here is a scope variable
pre-defined: {{name}} </div>', // <---- this is the problem
controller: ['$q', function ($q) {
var vm = this;
vm.name = 'something';
}]
}
}])
基本上,控制器没有名称,因为它是一个内联控制器,那么我如何在模板属性中表示它呢?我真的必须像下面这样声明控制器吗?
.controller('secondController', [function(){
var vm = this;
vm.name = 'John Snow';
}])
.directive('secondDirective', [function(){
return {
restrict: 'E',
template: '<div>This is a directive.
Here is a scope variable
pre-defined: {{vm.name}} </div>', // <- declaring as vm.name will work
controller: 'secondController as vm'
}
我认为在您的控制器中,您希望获得$scope
并将变量分配给$scope
。
.directive('firstDirective', [function () {
return {
restrict: 'E',
template: '<div>This is a directive.
Here is a scope variable
pre-defined: {{name}} </div>',
controller: ['$scope','$q', function ($scope,$q) {
$scope.name = 'something';
}]
}
}])
演示:http://plnkr.co/edit/uzudOphRL8QO6utEBF4F?p=preview
从使用this
实现
.directive('firstDirective', [function () {
return {
restrict: 'E',
template: '<div>This is a directive.
Here is a scope variable
pre-defined: {{vm.name}} </div>',
controllerAs: 'vm',
controller: ['$q', function ($q) {
var vm = this;
vm.name = 'something';
}]
}
}])
相关文章:
- 如何从AngularJs中的另一个控制器访问控制器
- MVC+访问控制器中的隐藏字段
- 当指令中已经给定作用域时,如何访问控制器中声明的函数
- angularjs:指令的访问控制器
- AngularJS:访问控制器中的单选按钮值更改
- 使用 angularjs 访问控制器中的 ng-model 数据
- 角度嵌入和访问控制器范围
- 无法从具有隔离作用域的指令中访问控制器中定义的对象
- 我需要做什么才能访问控制器中的全局数据
- 如何从 ng-repeat(ng-repeat)中的指令访问控制器范围
- AngularJS - 访问控制器内的指令对象
- Angular 1.5:访问控制器内部的绑定控制器属性
- 从 $scope 上的函数访问控制器内的实例函数
- Angular - 编译指令后无法访问控制器方法
- 如何访问控制器内的工厂方法
- 从视图访问控制器值的 Grails
- 从 Angular UI 路由访问控制器
- 在 Javascript 中访问控制器变量的最佳方法是什么?
- 代码点火器始终希望 index.php 访问控制器
- 我在从我的指令 Angular 访问控制器的范围时遇到问题