无法在ons-dialog中获取范围参数。为什么?

时间:2016-05-18 19:56:02

标签: angularjs controller hybrid-mobile-app onsen-ui

我认为这不是一个难题,但出了点问题。我是处理onsen UI的新手,我想创建一个对话窗口,我需要一些参数。我不知道为什么它不起作用。这是我的HTML:

<ons-template id="tippDialog">
<ons-dialog var="tippdialog" id="tippdialog" ng-controller="controllerName" cancelable>
    <div class="center">
        <h3>Tipp abspeichern</h3>
        <form action="saveTip.php">
            <ons-input id="tippa" type="number" placeholder="TipA" value=""></ons-input>
            <ons-input id="tippb" type="number" placeholder="TipB" value=""></ons-input>
            <p>{{tip_matchid}}{{userid}}</p>
        </form>
        <ons-button id="tippspeichern">Speichern</ons-button>
    </div>
</ons-dialog>

这就是我在控制器中所做的事情:

$scope.dialogs = {};

            $scope.tipDialog = function(match_id){
                tip_matchid = match_id;
                $scope.tip_matchid = tip_matchid;
                $scope.userid = userid;
                ons.createDialog("../dialogs/tippDialog.html", $scope).then(function(tippdialog){
                    $scope.dialogs[tippdialog] = tippdialog;
                    tippdialog.show();
                });
            }

在stackoverflow中找到了一些代码,但我找不到任何有用的东西。希望可以有人帮帮我。谢谢!

2 个答案:

答案 0 :(得分:1)

有一个解决方案。认为这不是最好的方法,但你可以这样做:

$scope.dialogs = {};

            $scope.tipDialog = function(match_id, tipa, tipb){
                tip_matchid = match_id;
                ons.createDialog("../dialogs/tippDialog.html", $scope).then(function(tippdialog){
                    tippdialog._scope.tip_matchid = tip_matchid;
                    tippdialog._scope.userid = userid;
                    $scope.dialogs[tippdialog] = tippdialog;
                    tippdialog.show();
                });
            }

答案 1 :(得分:0)

我想文档可以使用一些改进......

我还没有对它进行过测试,但我认为这是你正在寻找的:

$scope.dialogs = {};

$scope.tipDialog = function(match_id){
    $scope.tip_matchid = tip_matchid = match_id;
    $scope.userid = userid;
    ons.createDialog("../dialogs/tippDialog.html", {parentScope: $scope}).then(function(tippdialog){
        $scope.dialogs[tippdialog] = tippdialog;
        tippdialog.show();
    });
}

重要的部分是{parentScope: $scope}

使用当前实现,这是Onsen检查的属性。
它确实ons.$compile(angular.element(element))(options.parentScope.$new())

所以基本上你的对话框有你提供的兄弟范围。通过使用{parentScope: $scope},它变成了一个子范围,我想这就是你想拥有的。