Javascript 如何访问模型&x27;s data controller INDER指令中的这些已定义为;这是什么;?
我把access数据和指令混淆了,特别是当我定义了我的模型时,比如:Javascript 如何访问模型&x27;s data controller INDER指令中的这些已定义为;这是什么;?,javascript,angularjs,Javascript,Angularjs,我把access数据和指令混淆了,特别是当我定义了我的模型时,比如: vm = this; vm.myModel = "hello"; 我的指示是: function mySelectedAccount(){ return { restrict: 'A', link: function(scope, element, attrs) { element.on('click', function() { con
vm = this;
vm.myModel = "hello";
我的指示是:
function mySelectedAccount(){
return {
restrict: 'A',
link: function(scope, element, attrs) {
element.on('click', function() {
console.log(scope.myModel);
});
}
}
}
由于我没有使用$scope,如何在指令中访问控制器中定义的“myModel”?如果我尝试使用指令中的scope参数访问它,我将无法定义
感谢您抽出时间来这里,您的
vm
变量引用了您的控制器实例。在您的作用域中,将控制器上下文注册到vm
变量中
因此,您可以:
控制器
(function(){
function Controller($scope) {
var vm = this;
vm.myModel = 'toto';
}
angular
.module('app', [])
.controller('ctrl', Controller);
})();
指令
(function(){
function directive() {
return {
link:function(scope, element, attrs){
element.on('click', function() {
//Access to vm property wrap into the scope
console.log(scope.vm.myModel);
});
}
};
}
angular
.module('app')
.directive('directive', directive);
})();
然后在html中,您可以使用controllerAs语法:
HTML
<body ng-app='app' ng-controller="ctrl as vm">
<div directive>{{vm.myModel}}</div>
</body>
{{vm.myModel}}
您可以在这里看到非常感谢!你的回答很有帮助!:)