似乎无法从ng-change事件中的角度绑定控制获得价值

时间:2015-05-05 19:04:12

标签: javascript angularjs ionic

我有一个简单的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

的示例

2 个答案:

答案 0 :(得分:3)

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

Codepen

ng-change="shareLocChange(shareLoc)" 

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

答案 1 :(得分:2)

似乎ion-view创建了一个独立的范围,所以如果你传递一个原始参数,它将按值复制它,当它改变时 - 原始参数将保持不变。

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

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