修复announcement js中作用域的问题

This commit is contained in:
sxw 2015-08-08 12:22:47 +08:00
parent fcd5caae02
commit 9da0716848
2 changed files with 100 additions and 99 deletions

View File

@ -1,29 +1,23 @@
require(["jquery", "avalon", "csrf", "bs_alert", "editor", "validation"], function ($, avalon, csrfHeader, bs_alert, editor) {
announcementEditor = editor("#editor"); //创建新建公告的内容编辑器
editAnnouncementEditor = null;
editAnnouncementEditor = editor("#editAnnouncementEditor");
if (!avalon.vmodels.announcement) // 防止模式重新定义
{
// avalon:定义模式 announcement
vm = avalon.define({
avalon.vmodels.announcement = null;
// avalon:定义模式 announcement
avalon.ready(function () {
var vm = avalon.define({
$id: "announcement",
announcement: [], // 公告列表数据项
previous_page: 0, // 之前的页数
next_page: 0, // 之后的页数
page: 1, // 当前页数
isEditing: 0, // 正在编辑的公告的ID 为零说明未在编辑
page_count: 1,
visableOnly : false,
showOrHide : "仅显示可见",
announcementVisible : true,
changeHiddenState : function () {
if (vm.visableOnly == false)
vm.showOrHide = "显示全部";
else
vm.showOrHide = "仅显示可见";
vm.visableOnly =! vm.visableOnly;
getPageData(vm.page);
},
//通用变量
announcement: [], // 公告列表数据项
previous_page: 0, // 之前的页数
next_page: 0, // 之后的页数
page: 1, // 当前页数
isEditing: 0, // 正在编辑的公告的ID 为零说明未在编辑
page_count: 1, // 总页数
visableOnly: false, //仅显示可见公告
// 编辑
announcementVisible: 0,
getState: function (el) { //获取公告当前状态,显示
if (el.visible)
return "可见";
@ -33,14 +27,14 @@ require(["jquery", "avalon", "csrf", "bs_alert", "editor", "validation"], functi
getNext: function (el) {
if (!vm.next_page)
return;
getPageData(++(vm.page));
getPageData(vm.page + 1);
},
getPrevious: function (el) {
if (!vm.previous_page)
return;
getPageData(--(vm.page));
getPageData(vm.page - 1);
},
getBtnClass: function (btn) {
getBtnClass: function (btn) { //上一页/下一页按钮启用禁用逻辑
if (btn) {
return vm.next_page ? "btn btn-primary" : "btn btn-primary disabled";
}
@ -49,12 +43,10 @@ require(["jquery", "avalon", "csrf", "bs_alert", "editor", "validation"], functi
}
},
enEdit: function (el) { //点击编辑按钮的事件,显示/隐藏编辑区
enEdit: function (el) { //点击编辑按钮的事件,显示/隐藏编辑区
$("#newTitle").val(el.title);
if (!editAnnouncementEditor) //初始化编辑器
editAnnouncementEditor = editor("#editAnnouncementEditor");
editAnnouncementEditor.setValue(el.content);
vm.announcementVisible=el.visible;
vm.announcementVisible = el.visible;
if (vm.isEditing == el.id)
vm.isEditing = 0;
else
@ -70,14 +62,20 @@ require(["jquery", "avalon", "csrf", "bs_alert", "editor", "validation"], functi
if (content != "") {
$.ajax({ //发送修改公告请求
beforeSend: csrfHeader,
url: "/api/announcements/",
url: "/api/admin/announcement/",
dataType: "json",
method: "put",
data: {id: vm.isEditing, title: title, content: content, visible: vm.announcementVisible},
data: {
id: vm.isEditing,
title: title,
content: content,
visible: vm.announcementVisible
},
success: function (data) {
if (!data.code) {
bs_alert("修改成功");
vm.isEditing = 0;
getPageData(1);
}
else {
bs_alert(data.data);
@ -92,76 +90,81 @@ require(["jquery", "avalon", "csrf", "bs_alert", "editor", "validation"], functi
bs_alert("公告标题不能为空");
}
});
}
avalon.scan();
getPageData(1); //公告列表初始化
vm.page = 1;
vm.isEditing = 0;
//Ajax get数据
function getPageData(page) {
var visible = '';
if (vm.visableOnly == true)
visible = "&visible=true";
$.ajax({
beforeSend: csrfHeader,
url: "/api/announcements/?paging=true&page=" + page + "&page_size=10"+visible,
dataType: "json",
method: "get",
success: function (data) {
if (!data.code) {
vm.announcement = data.data.results;
vm.page_count = data.data.total_page;
vm.previous_page = data.data.previous_page;
vm.next_page = data.data.next_page;
}
else {
bs_alert(data.data);
}
}
vm.$watch("visableOnly", function () {
getPageData(1);
});
}
//新建公告表单验证与数据提交
$("#announcement-form")
.formValidation({
framework: "bootstrap",
fields: {
title: {
validators: {
notEmpty: {
message: "请填写公告标题"
avalon.scan();
getPageData(1); //公告列表初始化
//Ajax get数据
function getPageData(page) {
var visible = '';
if (vm.visableOnly == true)
visible = "&visible=true";
$.ajax({
beforeSend: csrfHeader,
url: "/api/announcements/?paging=true&page=" + page + "&page_size=10" + visible,
dataType: "json",
method: "get",
success: function (data) {
if (!data.code) {
vm.announcement = data.data.results;
vm.page_count = data.data.total_page;
vm.previous_page = data.data.previous_page;
vm.next_page = data.data.next_page;
vm.page = page;
}
else {
bs_alert(data.data);
}
}
});
}
//新建公告表单验证与数据提交
$("#announcement-form")
.formValidation({
framework: "bootstrap",
fields: {
title: {
validators: {
notEmpty: {
message: "请填写公告标题"
}
}
}
}
}
}
).on('success.form.fv', function (e) {
e.preventDefault();
var title = $("#title").val();
var content = announcementEditor.getValue();
if (content == "") {
bs_alert("请填写公告内容");
return;
}
$.ajax({
beforeSend: csrfHeader,
url: "/api/admin/announcement/",
data: {title: title, content: content},
dataType: "json",
method: "post",
success: function (data) {
if (!data.code) {
bs_alert("提交成功!");
$("#title").val("");
announcementEditor.setValue("");
getPageData(1, function (data) {
});
} else {
bs_alert(data.data);
}
).on('success.form.fv', function (e) {
e.preventDefault();
var title = $("#title").val();
var content = announcementEditor.getValue();
if (content == "") {
bs_alert("请填写公告内容");
return;
}
})
});
$.ajax({
beforeSend: csrfHeader,
url: "/api/admin/announcement/",
data: {title: title, content: content},
dataType: "json",
method: "post",
success: function (data) {
if (!data.code) {
bs_alert("提交成功!");
$("#title").val("");
announcementEditor.setValue("");
getPageData(1, function (data) {
});
} else {
bs_alert(data.data);
}
}
})
});
});
});

View File

@ -25,8 +25,7 @@
</tr>
</table>
<div class="form-group">
<button class="btn btn-info" ms-click="changeHiddenState()">{{showOrHide}}</button>
<label>仅显示可见 <input ms-duplex-checked="visableOnly" type="checkbox"/></label>
</div>
<div class="text-right">
页数:{{page}}/{{page_count}}&nbsp;&nbsp;
@ -36,7 +35,6 @@
<div ms-visible="isEditing">
<h3>编辑公告</h3>
<div class="form-group"><label for="title">标题</label>
<input name="title" type="text" class="form-control" id="newTitle" placeholder="公告标题" value=""></div>
<div class="form-group">
@ -44,7 +42,7 @@
<textarea id="editAnnouncementEditor"></textarea>
</div>
<div class="form-group">
<label>显示 <input ms-duplex-checked="announcementVisible" type="checkbox"/></label>
<label>可见 <input ms-duplex-checked="announcementVisible" type="checkbox"/></label>
</div>
<div class="form-group">
<button ms-click="submitChange()" class="btn btn-primary">提交</button>