AngularJS 1.5 - 如何在组件上设置双向绑定
AngularJS 1.5 - How to Set Two Way Bindings on Component
Angular 1.X 中的指令默认设置为双向绑定。默认情况下,组件具有独立的作用域。我的视图如下所示:
<div class="my-view">
{{controllerVariable}}
</div>
如果我将以上设置为指令,controllerVariable
会在以下情况下正确加载:
<div ng-controller="myController">
<my-view></my-view>
</div>
但是如果我使用以下方法将其设置为组件:
myApp.component('myView', {
templateUrl: '/path/to/view',
bindings: '='
});
则不显示变量值。我尝试将 $ctrl
添加到变量中:
<div class="my-view">
{{$ctrl.controllerVariable}}
</div>
但这也不显示值。
我在这里错过了什么?
您需要将指令中的值传递到组件中:
<my-view passed-var='ctrl.passedVar'></my-view>
在组件中:
myApp.component('myView', {
templateUrl: '/path/to/view',
bindings: {
passedVar: '='
},
controller: function () {
var vm = this;
console.log(vm.passedVar);
}
});
那么您就可以像示例中那样在组件中访问了
还有一些其他方法可以做到这一点,例如使用服务来处理信息或使用 require 来让您的组件访问指令的控制器。您可以在此处找到上述方法和其他方法:https://docs.angularjs.org/guide/component。
我必须明确说明我想绑定的变量:
myApp.component('myView', {
templateUrl: '/path/to/view',
bindings: {
controllerVariable: '@'
}
});
此外,由于 controllerVariable
是一个字符串,我不得不使用 @
符号绑定。
Angular 1.X 中的指令默认设置为双向绑定。默认情况下,组件具有独立的作用域。我的视图如下所示:
<div class="my-view">
{{controllerVariable}}
</div>
如果我将以上设置为指令,controllerVariable
会在以下情况下正确加载:
<div ng-controller="myController">
<my-view></my-view>
</div>
但是如果我使用以下方法将其设置为组件:
myApp.component('myView', {
templateUrl: '/path/to/view',
bindings: '='
});
则不显示变量值。我尝试将 $ctrl
添加到变量中:
<div class="my-view">
{{$ctrl.controllerVariable}}
</div>
但这也不显示值。
我在这里错过了什么?
您需要将指令中的值传递到组件中:
<my-view passed-var='ctrl.passedVar'></my-view>
在组件中:
myApp.component('myView', {
templateUrl: '/path/to/view',
bindings: {
passedVar: '='
},
controller: function () {
var vm = this;
console.log(vm.passedVar);
}
});
那么您就可以像示例中那样在组件中访问了
还有一些其他方法可以做到这一点,例如使用服务来处理信息或使用 require 来让您的组件访问指令的控制器。您可以在此处找到上述方法和其他方法:https://docs.angularjs.org/guide/component。
我必须明确说明我想绑定的变量:
myApp.component('myView', {
templateUrl: '/path/to/view',
bindings: {
controllerVariable: '@'
}
});
此外,由于 controllerVariable
是一个字符串,我不得不使用 @
符号绑定。