angular.js - angular雙向綁定機(jī)制異常
問題描述
目前項(xiàng)目為當(dāng)頁面應(yīng)用admin,因?yàn)槭褂胊ngular不是很多,但也做過一個(gè)項(xiàng)目。屬于原理不是很懂,但大概怎么知道使用的水平。最近遇見了一個(gè)讓我比較差異的問題。一直找不到問題的所在所以來此求angular的點(diǎn)評(píng)下我的異常,或者說angular的雙向綁定機(jī)制。
很簡(jiǎn)單的一個(gè)table列表,我目前的增刪改查的功能大概步驟是這樣的:查詢:查詢新增:新增----新增成功后再一次調(diào)用一次查詢,實(shí)現(xiàn)了添加數(shù)據(jù)后立馬列表就成功顯示出來了不需要刷新。修改,刪除也是和新增一樣,成功后再一次調(diào)取查詢,更新一下數(shù)據(jù)列表。代碼如下: `
angular.module(’index_area’).controller(’GoodlistCtrl’,GoodlistCtrl);GoodlistCtrl.$inject = [’$state’,’GoodResource’,’PublicResource’,'$stateParams'];function GoodlistCtrl($state,GoodResource,PublicResource,$stateParams) {
document.title ='基礎(chǔ)商品列表';var vm = this;vm.pagecount; //分頁總數(shù)vm.pageint=1; //當(dāng)前分頁導(dǎo)航vm.skip=0 //從第幾個(gè)開始vm.limit=12;//從第幾個(gè)結(jié)束vm.list;//獲取頁面坐標(biāo)vm.index=$stateParams.index; PublicResource.navclass(vm.index)//分頁點(diǎn)擊事件vm.pageChanged = function(){ }//獲取sessionIdvm.seid=PublicResource.seid('cw19931024');//新增商品vm.addinfo = function(list){ GoodResource.addlist(list,vm.seid).then(function(data){console.log(data) })}//查詢基礎(chǔ)商品列表info_list(vm.seid);/**
基礎(chǔ)商品集合
@param {Object} seid*/
info_list(){
GoodResource.list(vm.seid,vm.skip,vm.limit).then(function(data){ vm.list=data.result; console.log(data.result) })
}
vm.getmack = function(id){
$state.go('/good/format',{'id':id})
}
vm.delinfo = function(id){
layer.confirm(’您確定要?jiǎng)h除數(shù)據(jù)?’, { btn: [’確定’,’取消’] //按鈕 }, function(){ remove(id); });
}
remove(id){
GoodResource.dellist(vm.seid,id).then(function(data){ console.log(data)if (data.status=='OK') { layer.msg(’刪除成功~’, {icon: 1}); info_list(vm.seid); layer.closeAll(); } else{ layer.msg(’刪除異常,請(qǐng)聯(lián)系管理員~’, {icon: 0}); } })
}}
`可以看出刪除在刪除代碼:`function remove(id){
GoodResource.dellist(vm.seid,id).then(function(data){console.log(data) if (data.status=='OK') {layer.msg(’刪除成功~’, {icon: 1}); info_list(vm.seid); layer.closeAll();} else{ layer.msg(’刪除異常,請(qǐng)聯(lián)系管理員~’, {icon: 0});} })}`
當(dāng)我判斷成功后立馬info_list()調(diào)用了一次查詢,但是結(jié)果卻是頁面的數(shù)據(jù)沒有及時(shí)更新,而是我第二次觸發(fā)刪除的時(shí)候他才更新了之前的數(shù)據(jù)。請(qǐng)問這個(gè)問題是什么原因呢?是因?yàn)閍ngluar的渲染機(jī)制嗎?但是為什么我新增或者查詢的時(shí)候它能及時(shí)更新過來呢?
這是返回查詢的最新數(shù)據(jù),顯示我確實(shí)是刪除成功了,但是為什么就是無法同步就刷新呢?
問題解答
回答1:謝邀吧!不過,你這代碼貼的,我都醉了,還真是難看懂。
大概理了一下,你可以試著改改:
GoodlistCtrl.$inject = [’$scope’, ’$state’,’GoodResource’,’PublicResource’,'$stateParams'];function GoodlistCtrl($scope, $state,GoodResource,PublicResource,$stateParams) { function info_list(){GoodResource.list(vm.seid,vm.skip,vm.limit).then(function(data){ vm.list=data.result; $scope.$apply(); console.log(data.result);}); }}
相關(guān)文章:
1. java-se - 正在學(xué)習(xí)Java SE,為什么感覺學(xué)習(xí)Java就是在學(xué)習(xí)一些API。2. android - 離線地圖的這種列表該怎么實(shí)現(xiàn)?3. html5 - iOS的webview加載出來的H5網(wǎng)頁,怎么修改html標(biāo)簽select的樣式字體?4. 一個(gè)mysql聯(lián)表查詢的問題5. 運(yùn)行python程序時(shí)出現(xiàn)“應(yīng)用程序發(fā)生異常”的內(nèi)存錯(cuò)誤?6. python - 如何使用pykafka consumer進(jìn)行數(shù)據(jù)處理并保存?7. 主從備份 - 跪求mysql 高可用主從方案8. javascript - git clone 下來的項(xiàng)目 想在本地運(yùn)行 npm run install 報(bào)錯(cuò)9. mysql主從 - 請(qǐng)教下mysql 主動(dòng)-被動(dòng)模式的雙主配置 和 主從配置在應(yīng)用上有什么區(qū)別?10. mysql - 一個(gè)表和多個(gè)表是多對(duì)多的關(guān)系,該怎么設(shè)計(jì)
