一尘不染

AngularJS:如何将参数/函数传递给指令?

angularjs

看看这个小提琴,我必须更改什么,才能使用我在HTML中定义的参数来评估模板中的表达式?blabla()因为我通过了SAVE按钮,所以它应该调用控制器的-
function?

var myApp = angular.module('MyApp',[])
myApp.directive('editkeyvalue', function() {
    return {
        restrict: 'E',
        replace: true,
        scope: {
            accept: "expression"
        },
        template : '<div><label class="control-label">{{key}}</label>' +
        '<label class="control-label">{{key}}</label>' +
          '<input type="text" ng-model="value" />'+
        '<button type="button" x-ng-click="cancel()">CANCEL</button>' +
        '<button type="submit" x-ng-click="save()">SAVE</button></div>',

      controller: function($scope, $element, $attrs, $location) {
        $scope.save= function() {
          $scope.accept();
        };
      }
    }
});

我看不出来。感谢帮助!


阅读 226

收藏
2020-07-04

共1个答案

一尘不染

您可以property: '='按照Roy的建议设置两种方式的数据绑定。因此,如果您既想要keyvalue绑定到本地范围,则可以

scope: {
    key: '=',
    value: '='
},

由于要传递这些值,因此可以在指令的控制器中访问它们。但是,如果您想在父作用域的上下文中运行一个函数,这似乎是您要对accept属性执行的操作,那么您需要像这样告诉angular

scope: {
    accept: "&"
}

现在,从您的save方法中,您可以调用通过accept

controller: function($scope, $element, $attrs, $location) {
    $scope.save= function() {      
        $scope.accept()
    };
}

这是一个jsfiddle

2020-07-04