javascript – 如何在Controller As语法中使用带有范围的Ionic Popup?
作者:互联网
我有一个使用Controller作为语法的Angular控制器设置,我需要从一个方法创建一个带有绑定数据字段的Ionic Popup.我无法弄清楚的是如何为数据绑定设置弹出窗口的范围.我找到了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>
任何想法将不胜感激.
谢谢,
贾森
解决方法:
在该示例中,他们注入$scope,以便他们可以将其指定为弹出窗口选项中的范围属性.
也许如果我弄清楚“控制器为”语法实际上是做什么的,你就不会觉得它太乱了:)
当您执行ng-controller =“myController as ctrl”时,您所做的就是在该控制器的$scope上声明一个名为ctrl的变量,并将该值设置为该控制器的值.将“myController作为ctrl”实际上与没有像这样的“as”快捷方式完全相同:
<!-- markup -->
<div ng-controller="myController"></div>
然后在你的控制器中:
// controller
app.controller('myController', function ($scope) {
$scope.ctrl = this;
});
你将“myController作为ctrl”的唯一区别是$scope.ctrl =这只是在幕后发生的.
查看this demo以证明它们是同一个.
他们在你联系的演示中所做的事情在我看来完全没问题;)
这是我写的关于“控制器为”的博客文章,如果你有兴趣:http://codetunnel.io/angularjs-controller-as-or-scope/
标签:javascript,angularjs,angularjs-controller,ionic 来源: https://codeday.me/bug/20190609/1204374.html