发表于: 2017-05-14 21:32:23
1 1110
今天完成的任务
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
评论