页面视图不更新时,在方法后手动调用$scope.$apply()方法,手动更新视图
举例如下:
else if(count==1){
$scope.showImg=dataBase64;strHead=dataBase64.indexOf('data:image/');
strFoot=dataBase64.indexOf('base64,',strHead)+7;
strValue=dataBase64.substring(strHead,strFoot);
dataBase64=dataBase64.replace(strValue,'');
$scope.sendImg=dataBase64;
}
$scope.$apply();
也可将需手动更新视图的方法写入$scope.$apply()中,达到同样的目的
菜鸡笔者在解决此问题后又遇到一个更玄幻的问题,input框的ng-model双向绑定失效,除了在{{value}}中绑定值正常,在打印与传值中等操作中都是以最初赋的值呈现,在询问度娘尝试后得到如下方法:
$scope.title=''; //之前的赋值
$scope.theTitle={
'title':''
}; //修改后的赋值
<input type="text" ng-model="title" />
<input type="text" ng-model="theTitle.title" /> //同理,html中的绑定也随之变化
打印后发现数据正常,网上还有另一种方法,
$scope.ctrlScope = $scope
<input ng-model="ctrlScope.myMessage" />
大概思路是将所用对象设为一个对象中的属性,并以对象的形式绑定值,亲测可用,原理未知,可能涉及到原型链,scope的相关知识,项目紧,在这就不赘述了,希望这些总结对各位有帮助。