使用 vm 而不是 $scope 引用指令属性
Reference directive attribute with vm rather than $scope
我有一个自定义指令,如下所示:
<my-queue id="report.id" version="report.version"></my-queue>
在我的指令定义对象中,我引用了我的控制器和范围,如下所示:
controller: 'QueueController',
controllerAs: 'myQueue',
scope: {
id: '=',
version: '='
}
在我的控制器中,我设置了var vm = this
,以便我可以将范围变量称为vm.variable
。但是,这不适用于id
和version
。我发现我需要注入$scope
并将这些属性引用为 $scope.id
和 $scope.version
.有没有办法进行设置,以便我可以避免注入$scope
并通过引用vm.id
和vm.version
与控制器的其余部分保持一致?
指令配置对象上的 controllerAs 属性将用于引用控制器实例,因此如果要在模板中使用 vm
,则需要将 controllerAs
属性设置为 vm
。 此外,通过将 bindToController
属性设置为 true
可以直接绑定到视图模型,而不是$scope:
function myQueue() {
return {
restrict: 'E',
template: ... ,
controller: myQueueCtrl,
controllerAs: 'vm',
scope: {
id: '=',
version: '='
},
bindToController: true
}
}
使用您当前的指令配置,您的controllerAs
引用将在 myQueue
下,而不是vm
,这意味着您在vm
上创建的任何属性(例如 控制器中的 vm.id
) 将在模板中myQueue
打开(例如 myQueue.id
)。
通过添加bindToController
,我们不需要在指令的控制器中注入$scope:
function QueueController() {
var vm = this;
}
然后,您可以在指令模板中将变量引用为
{{vm.id}}
{{vm.version}}
这里有一个指令的触发器,bindToController
设置为 true,controllerAs
设置为 vm
。
相关文章:
- 引用对象中的通用值
- 如何在JavaScript中将字符串转换为函数引用
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- AngularJS:ng之后,重复$scope值未按预期更新
- 在动态创建的元素上获取对特定选择器的引用
- 强制DOM在$scope模型对工厂模型的引用发生更改时进行渲染
- 未捕获的引用错误:未定义$scope - AngularJS
- 通过引用传递$scope变量以函数
- AngularJS将字符串转换为引用$scope中的对象的对象/数组
- JavaScript Scope:引用任意新对象的计时器
- 从$http请求角度中引用$scope变量
- 获取$rootScope事件处理程序的$scope引用
- 在没有$scope的指令中引用作用域变量
- & # 39;这个# 39;真正的引用"$scope"在AngularJS'
- 在angularjs中的$scope成员函数中引用函数中的变量
- 无法在AngularJS的$scope中引用类成员(Array)
- 将指向服务对象属性的指针/引用添加到$scope变量
- AngularJS-为什么$scope.properties's的值在更改引用它的变量时发生更改
- 在$scope中丢失此引用$在活动中
- 使用 vm 而不是 $scope 引用指令属性