我有一个使用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>
任何想法都将不胜感激。 谢谢, 杰森
答案 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/