似乎无法从 ng-change 事件中的 angular 绑定控件中获取值

Can't seem to get value from angular binding control in ng-change event

我有一个简单的 Angular/Ionic 页面:

<ion-view ng-controller="HomeController">
    <ion-content has-header="true" padding="true">
        <ion-toggle ng-model="shareLoc" ng-change="shareLocChange()" toggle-class="toggle-stable">Share location</ion-toggle>
       Current value: {{shareLoc}}
    </ion-content>
</ion-view>

在控制器中,我在更改值时打印复选框的值:

angular.module('ionicApp', ['ionic'])

.controller("HomeController", function ($scope) {
    console.log('HomeController');
    $scope.shareLoc = false;
    $scope.shareLocChange = function() {
        console.log($scope.shareLoc);
    };
});

但是不行!我可以在其他 HTML 字段中绑定它(如上所示),但出于某种原因,每当我在代码中访问它时,它都会返回 false(或者我在控制器初始化中设置的任何值)。我是不是弄错了 $scope 之类的?!

示例位于 http://codepen.io/pugwonk/pen/OVymYv

所以,实际上我对此感到有些困惑,但是通过函数传递模型的值可以解决您的问题。

Codepen

ng-change="shareLocChange(shareLoc)" 

$scope.shareLocChange = function(shareLoc) {
  console.log(shareLoc);
};

似乎 ion-view 创建了一个独立的作用域,因此如果您传递原始参数,它将按值复制它,当它发生变化时 - 原始参数将保持不变。

另一方面 - 如果您传递一个对象作为参数,两个范围将能够使用相同的副本。

您可以看到不同的范围 ID 和对象的传递 here