我有一个简单的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
或其他什么东西?!
答案 0 :(得分:3)
所以,我实际上对此感到有些困惑,但是通过你的函数传递模型的价值可以解决你的问题。
ng-change="shareLocChange(shareLoc)"
$scope.shareLocChange = function(shareLoc) {
console.log(shareLoc);
};
答案 1 :(得分:2)
似乎ion-view
创建了一个独立的范围,所以如果你传递一个原始参数,它将按值复制它,当它改变时 - 原始参数将保持不变。
另一方面 - 如果您传递一个对象作为参数,则两个范围都可以使用相同的副本。
您可以看到不同的范围ID和对象here的传递。