angularjs – 在创建$ionModal时使用“this”作为范围

前端之家收集整理的这篇文章主要介绍了angularjs – 在创建$ionModal时使用“this”作为范围前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当我尝试指定我的范围而不是$scope时,我似乎在创建一个$ionModal时遇到问题.

由于我通过实例名称绑定我的控制器中的所有内容,所以我没有在控制器内部使用$scope.

所以,我启动了在Ionic Framework doc这里指示的模式
并用此切换$范围

$ionicModal.fromTemplateUrl('my-modal.html',{
    scope: this,animation: 'slide-in-up'
  }).then(function(modal) {
    this.modal = modal;
  });

当应用程序运行时,我收到以下错误

undefined is not a function

并在ion.bundle.js中引用以下代码

var createModal = function(templateString,options) {
    // Create a new scope for the modal
    var scope = options.scope && options.scope.$new() || $rootScope.$new(true);

我甚至尝试分配另一个变量来表示它,并以这种方式运行,但是同样的错误占优势!

如果我没有在我的控制器中使用$scope,那么在保持这种使用方式的同时加载模态是最好的方法?这是不可能还是我错过了什么?

编辑-
根据要求,添加更多信息到原始,

模板:

<div id="wrapper" ng-controller="MainCtrl as ctrl">
<button ng-click="ctrl.demo()">Demo Button</button>
</div>

控制器:

angular.module('MyDemo',['ionic'])
.controller('MainCtrl',function ($ionicModal) {
var _this = this;
this.demo = function () {
//do demo related stuff here
}

$ionicModal.fromTemplateUrl('my-modal.html',{
        scope: _this,animation: 'slide-in-up'
      }).then(function(modal) {
        _this.modal = modal;
      });
});

所以,基本上,我使用这里找到的第一个声明风格:
https://docs.angularjs.org/api/ng/directive/ngController

编辑:将其更改为$ionModal内的_this

根据要求,这里是一个具有以上代码的空格:
http://plnkr.co/edit/4GbulCDgoj4iZtmAg6v3?p=info

由于AngularJs当前使用“controller as”语法设置了控制器的方式,所以您只能具有您在控制器功能中定义的任何功能属性.为了访问AngularJ提供的 $new()功能来创建子范围,您需要提供一个AngularJs $scope对象,即使使用“controller as”语法,仍然可以将其注入到构造函数中.
angular.module('MyDemo',function ($scope,$ionicModal) {
  var _this = this;
  this.demo = function () {
    //do demo related stuff here
  }

  $ionicModal.fromTemplateUrl('my-modal.html',{
    scope: $scope,animation: 'slide-in-up'
  }).then(function(modal) {
    _this.modal = modal;
  });
});
原文链接:https://www.f2er.com/angularjs/142998.html

猜你在找的Angularjs相关文章