javascript - AngularJS - 接受对象或方法的指令参数

标签 javascript angularjs

我有一个接受对象作为参数的指令。我想将对象或返回对象的方法传递给此参数。

您可以view on JsFiddle这是代码:

HTML

<div ng-controller="Ctrl as vm">
  <my-directive user="{id: 1, name: 'Mike'}"></my-directive>
  <my-directive user="vm.getUser()"></my-directive>
</div>

JS

var app = angular.module('myApp', []);

app.controller('Ctrl', function() {
  var vm = this;

  this.getUser = function() {
    return {id: 2, name: 'John'};
  };
})

app.directive('myDirective', function() {
  return {
    bindToController: {
      user: '='
    },
    controller: function() {
      var vm = this;
    },
    controllerAs: 'vm',
    replace: true,
    restrict: 'EA',
    scope: {},
    template: '<div>Name: {{vm.user.name}}</div>'
  };
});

如果我像上面一样将参数的类型设置为 = ,则会收到以下错误:

Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!

AngularJS - Error Reference

<小时/>

实现我所追求的目标的正确方法是什么?

最佳答案

为指令设置两个参数,一个用于 obj,另一个用于函数,并在 Controller 中检查哪个参数有数据:

<my-directive userObject="{id: 1, name: 'Mike'}" userFunction="vm.getUser()"></my-directive>

Controller 会像这样:

    controller: function() {
    if($scope.userObject){
        //do something ...
    }else if ($scope.userFunction){
        //do something else ... 
    }
}

关于javascript - AngularJS - 接受对象或方法的指令参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46668949/

相关文章:

javascript - 找不到 AngularJS uibModal 依赖项

Javascript bool 运算不起作用

javascript - 想要同时使用 browserAction 和 pageAction

javascript - JS是否将参数列表视为可以关闭的范围?

javascript - 如何在 JQuery 验证器的 invalidHandler 中显示消息

javascript - 更改谷歌地图中的javascript不会更新它?

javascript - 如何使用 Angular jQuery Validate 的 checkForm() 函数

javascript - 如何使用 Angular 指令和 transinclude 对表进行排序

angularjs - 如何在用户释放 AngularJS 中的按钮之前多次调用一个函数

javascript - IE6 中的出生日期选择器问题