ion-content 和 ion-footer 有不同的 $scope

Posted

技术标签:

【中文标题】ion-content 和 ion-footer 有不同的 $scope【英文标题】:ion-content and ion-footer have different $scope 【发布时间】:2015-07-19 03:13:32 【问题描述】:

我的 ion-content 中有两个输入字段,它们都附加了一个 ng-model。然后在我的 ion-footer 中,我有一个 ng-click,我在其中调用一个函数并传入两个 ng-model。

当我在 ion-content 中进行 ng-click 时,一切正常,但是当我将其移动到页脚时,我传递给函数的两个参数未定义。

这是否意味着 ?即使它们在同一个文件中并且具有相同的控制器??

【问题讨论】:

创建一个类似$scope.data = 的范围并将所有绑定在html.place 上的ng-model 放在这个对象中,例如ng-model="data.model1"ng-model="data.model2" @pankajparkar 太棒了!奇迹般有效!但我仍然很好奇为什么它没有像以前那样工作?在我的控制器中没有预定义变量的 ng-model 的情况下,内容和页脚是否具有不同的范围?只是好奇。 我相信 ion-content 和 ion-footer 确实创建了一个子范围..&正如您在控制器中声明的 $scope.data = 并访问它的内部属性..这将继承范围父母..我应该添加答案吗? @pankajparkar 是的,去吧,因为你是解决我问题的人! 【参考方案1】:

我相信 ion-footerion-content 从当前范围创建新的子范围 Prototypically inerherit。下面的 ionic 代码将更好地说明它是如何在内部工作的,scope: true, 负责创建一个新的子作用域。

代码

.directive('ionContent', [
  '$parse',
  '$timeout',
  '$ionicScrollDelegate',
  '$controller',
  '$ionicBind',
function($parse, $timeout, $ionicScrollDelegate, $controller, $ionicBind) 
  return 
    restrict: 'E',
    replace: true,
    transclude: true,
    require: '^?ionNavView',
    scope: true, //<-- this creates a prototypically inerherited scope
    template:
    '<div class="scroll-content">' +
      '<div class="scroll"></div>' +
    '</div>',

你需要使用.注解来解决你的问题

例如。

如果您使用变量作为原始类型

$scope.volume = 5

那么你需要使用:

$scope.data =  'volume' : 5

Angular Prototypal Scope Inheritance

【讨论】:

【参考方案2】:

pankajparkar 对 cme​​ts 中答案的解释:

ion-content 指令有了新的作用域。它使用点表示法工作(在处理范围继承时很重要)

这就是它与 ng-model="data.model1 一起使用的原因

请参考:

AngularJS documentation on scopes

Egghead video

【讨论】:

以上是关于ion-content 和 ion-footer 有不同的 $scope的主要内容,如果未能解决你的问题,请参考以下文章

将 ion-content 绑定为 GSAP Timeline 的滚动条

上拉加载更多即ion-content遇上slideBox的时候

Ionic 4:如何在 ion-content 中隐藏 ScrollBar

是否可以从 JS 函数调用 Google Maps Javascript API 并将其显示在 ion-content 上?

IONIC 4 ion-content 内滚动滚动条颜色/主题 w/ Electron 应用程序

4加载:Loading