如何在Controller As语法中使用带有范围的Ionic Popup?

时间:2015-06-11 21:37:06

标签: javascript angularjs ionic angularjs-controller

我有一个使用Controller作为语法的Angular控制器设置,我需要从一个方法创建一个带有绑定数据字段的Ionic Popup。我无法弄清楚如何为数据绑定设置弹出窗口的范围。我找到了this示例,但使用this和$ scope对我来说似乎很麻烦。有更好的方法可以做到这一点,还是我应该回到$ scope方法?

我的控制器看起来像这样(标有问题):

.controller('AccountCtrl', function ($ionicPopup) {
    // Properties ===========
    this.resetData = {};

    // Methods ==============
    this.forgotPassword = function () {
        var myPopup = $ionicPopup.show({
            template: '<input type="text" ng-model="<What goes here?>.resetData.resetEmail">',
            title: 'Please enter your e-mail address',
            scope: <What goes here?>
            buttons: [
                {
                    text: 'Submit',
                    onTap: function (e) {
                        console.log("Password reset:" + <What goes here?>.resetData);
                    }
                },
                { text: 'Cancel' }
            ]
        });
    }
})

我的模板看起来像:

<ion-view view-title="Sign In">
    <ion-content has-bouncing="false" ng-controller="AccountCtrl as account">
        <a href="#" ng-click="account.forgotPassword()">Forgot your password?</a>
    </ion-content>
</ion-view>

任何想法都将不胜感激。 谢谢, 杰森

1 个答案:

答案 0 :(得分:5)

在该示例中,他们会注入$scope,以便他们可以在弹出的scope选项中将其指定为show属性。

也许如果我清理&#34;控制器为&#34;语法实际上是在做,你不会觉得它太乱了:)

当您执行ng-controller="myController as ctrl"时,您所做的就是在该控制器的ctrl上声明一个名为$scope的变量,并将其设置为{ {1}}用于该控制器。将&#34; myController作为ctrl&#34;实际上与没有&#34; as&#34;完全相同。像这样的快捷方式:

this

然后在你的控制器中:

<!-- markup -->
<div ng-controller="myController"></div>

唯一的区别在于你将#Con; myController作为ctrl&#34;是// controller app.controller('myController', function ($scope) { $scope.ctrl = this; }); 在幕后发生的事情。

查看this demo,了解它们是否相同。

我认为他们在您关联的演示中所做的事情在我看来完全没问题;)

这是我写的关于&#34;控制器的博客文章&#34;如果您有兴趣:http://codetunnel.io/angularjs-controller-as-or-scope/