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

View File

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