mdDialog

时间:2018-01-04 14:28:50

标签: angularjs angular-material

我正在使用jk-rating-stars模块和mdDialog。它工作正常,但是当评级发生变化时,on-rating属性不会被调用。

这是我的代码:

$scope.onItemRating = function(rating) {
    debugger;
    console.log(rating);
    console.log("Hello World");

};

var parentEl = angular.element(document.body);

$mdDialog
    .show({
        parent: parentEl,
        targetEvent: $event,
        template: '<md-dialog>' +
            '<md-dialog-content>' +
            '<jk-rating-stars class="my-custom-stars"  max-rating="5"  rating="rate"  on-rating="onItemRating(rating)"></jk-rating-stars>' +
            '</md-dialog-content>' +
            '</md-dialog>',
        clickOutsideToClose: true,
        escapeToClose: true
    })
    .finally(function() {
        //alert = undefined;
    });

onItemRating未在控制器中调用。你能帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

这可能是因为对话框无法访问定义onItemRating的范围。

所以,您可以在对话框的控制器中定义方法,如下所示:

$mdDialog.show({
    controller: function($scope) {
        $scope.onItemRating = function(rating) {
            console.log(rating);
            console.log("Hello World");
        };
    },
    // The rest of your configs...
});


或者您可以直接将父控制器的$scope传递给对话框,如下所示:

$mdDialog.show({
    scope: $scope.$new(), // Uses prototypical inheritance to gain access to parent scope
    // The rest of your configs...
});

这样,对话框将访问您在父控制器的$scope中定义的任何内容,包括您的onItemRating函数。