Javascript 在AngularJS中,如何使指令成为对象,以便;传递信息”;对它(调用它的方法)?
我非常熟悉CanJS,有点像这样的想法,即您可以在HTML元素上实例化自定义web小部件,现在我们有了一个对象,我们可以向它发送消息(调用其中的方法): 或 用AngularJS怎么能做到?在创建一个指令并将其设置在HTML元素上或将该指令用作HTML元素后,如何执行上面的操作(如在OOP中),或者Smalltalk将如何执行--向特定对象发送消息 我可以想出一个办法,比如:Javascript 在AngularJS中,如何使指令成为对象,以便;传递信息”;对它(调用它的方法)?,javascript,angularjs,angular-directive,Javascript,Angularjs,Angular Directive,我非常熟悉CanJS,有点像这样的想法,即您可以在HTML元素上实例化自定义web小部件,现在我们有了一个对象,我们可以向它发送消息(调用其中的方法): 或 用AngularJS怎么能做到?在创建一个指令并将其设置在HTML元素上或将该指令用作HTML元素后,如何执行上面的操作(如在OOP中),或者Smalltalk将如何执行--向特定对象发送消息 我可以想出一个办法,比如: <review-stars api="ctrl.reviewStarAPI"></review-sta
<review-stars api="ctrl.reviewStarAPI"></review-stars>
然后在控制器中,执行以下操作:
vm.reviewStarAPI.setStars(3.5);
但这有点混乱,而且有些特别。它总是需要一个控制器。。。尽管如此,我认为我们可以使用1个控制器和作为主程序,实例化一组对象,然后以这种方式调用这些对象上的方法
除了上述方法之外,还有什么方法可以实现这一点?模块化方法是创建一个名为
reviewStars
的指令。指令应该有一个指示星级的参数
例如:
您可以使用以下内容创建:
angular.module('myAngularModule', [])
.directive('reviewStars', function() {
return {
restrict: 'E',
scope: {},
bindToController: {
rating: '@'
},
link: function(scope, elem, attrs) {
// instantiate the lightbox code here
},
controller: function () {
var vm = this;
// controller code goes here (e.g. the onClick event handler)
},
controllerAs: 'ctrl',
templateUrl: 'review-stars.html' // the HTML code goes in this file
};
});
查看Rangle的ng课程()或Angular文档(docs.angularjs.org)了解更多关于指令的信息。查看已经回答的类似问题。
scope: { api: "=" }
link: function(scope, elem, attrs) {
// first define some functions
scope.setStars = function(n) { ... };
// and then set it to the api object:
scope.api.setStars = scope.setStars();
}
vm.reviewStarAPI.setStars(3.5);
angular.module('myAngularModule', [])
.directive('reviewStars', function() {
return {
restrict: 'E',
scope: {},
bindToController: {
rating: '@'
},
link: function(scope, elem, attrs) {
// instantiate the lightbox code here
},
controller: function () {
var vm = this;
// controller code goes here (e.g. the onClick event handler)
},
controllerAs: 'ctrl',
templateUrl: 'review-stars.html' // the HTML code goes in this file
};
});