appCtrls.controller('uploadFileCtrl', function ($scope, $state, $cordovaImagePicker, localStorageService) {
$scope.initPage = function () {
$scope.folderName=""
$scope.fileList = [];
}
$scope.chooseFile = function () {
var options = {
maximumImagesCount: 9,
width: 800,
height: 800,
quality: 80
};
$cordovaImagePicker.getPictures(options).then(function (results) {
$scope.fileList=results;
console.log("fileList:"+$scope.fileList);
}, function (error) {
// error getting photos
});
}
})
//頁
請在$scope.fileList=results;下面加上$scope.$digest();
正常情況下ng-click等事件函數執行完畢後會自動偵測scope是否有變更然後套用變更。但是你這裡用了Promise來進行非同步操作,其中then()裡面的函數會在非同步操作完成後執行。而此時chooseFile已經執行完畢,除非你呼叫digest否則是不會自動偵測修改的。
總之,angular自動偵測修改會有很多例外,例如非同步操作,例如第三方事件,例如對其他控制器做的修改等,所以注意加$scope.$digest();
範本中的自訂指令可以正常使用。
該controller成功註冊到了模板中。
如果上兩條成立,那就是樓上說的,回呼函數沒有在模板渲染完成之前成功返回,所以拿不到返回的資料。