发表于: 2017-05-14 21:32:23

1 1109


今天完成的任务

1.js10第二个页面还有编辑功能代码的重写。。。

明天的计划

1.其实我明天请假了~~~~~

遇到的问题

1.input中的ng-modle无法实现双向绑定

一直以为自己写的东西有问题,结果写了一个input同时显示,发现在页面上是有双向绑定的效果的,但是在控制器里面,就获取不到这个双向绑定的值。

多方考究(其实就是百度加问师兄)之后,

原来问题出在我定义的controller这里,当然同样的bug也有普通和清奇之分,

百度上这个问题的普通版本是

把这个controller写在了路由里面,路由加载完毕之后,在模板文件的最顶端的dom里面,就是你写了 ui-view 的那个标签上创建你的控制器的作用域$scope,但是他又没有找到你创建ng-controller,所以就默认再给你创建一个匿名的作用域,再给你来一个$scoope4(无视这个命名的清奇),这个时候你有一个ng-model hello,这个货应该是$scope4.hello,但是你的controller里面的是 $scope.hello,对于这个controller来说,$scope4.hello并没有被定义,$scope4是当前作用域,$scope是上一级的作用域,这个东西是下面的继承上面的,改变的时候你改变的是$scope4.hello,$scope是不会跑到下面去找这个$scope4的作用域里面的hello的,修改的方法是有两个,

第一种方法

把hello这个东西变成$scope某对象的属性,例如$scope.hey.hello,在$scope4里面也用这个,$scope4.hey.hello,对于对象的修改,下级作用域发生改变,上一层也会相应改变,就达到了数据双向绑定的效果。

第二种方法

直接把controller写在模板里面,不写在路由上面

关于这个问题我的清奇错法

我直接在ng-controller的标签里面加了一个 ui-view=""

2.就是比较普通的重新写代码

把上线和存为草稿整合成一个东西

service里面

//点击上线,存为草稿

service.saveArticle = function (params) {

var defered = $q.defer();

$http({

method:'POST',

url:'/carrots-admin-ajax/a/u/article',

headers: {

'Content-Type':"application/x-www-form-urlencoded"

},

data: params,

transformRequest: angular.identity,

})

.then(function (response) {

defered.resolve(response.data);

})

return defered.promise;

}

controller里面

$scope.saveArticle = function (status) {

$scope.params = $.param({

'id':$scope.id,

'title':$scope.articleTitle,

'type':$scope.searchType.id,

'industry':$scope.industry.id,

'content':$scope.sendData.content,

'url':$scope.sendData.link,

'img':$scope.picUrl,

'status':status

});

console.log($scope.params);

myService.saveArticle($scope.params).then(function (res) {

console.log(res);

})

}

 

在ng-click的函数内带上参数,直接传进来然后其实两个功能的http请求是一样的,只有一个参数不同,所以整合在了一起

 

收获

活着,就是为了写bug



返回列表 返回列表
评论

    分享到