2 回答

TA貢獻1776條經驗 獲得超12個贊
您可以在 cshtml- 中使用以下內容
@section Scripts{
<script>
var [email protected](Json.Serialize(Model));
setup(objModel);
</script>
}
現在您可以在外部 JS 文件中定義 setup 函數,并且您還需要進行必要的更改以使用函數參數,而不是像這樣在函數中使用 @Html.Raw。
function setup(modelObj) {
createCanvas(880, 880);
background(255);
for (var i = 0; i < 11; i++) {
var posX = map(i, 0, 11, 0, width);
var posY = map(i, 0, 11, 0, height);
var posX2 = map(i, 0, 11, 0, width);
var posY2 = map(i, 0, 11, height, 0);
var tileRowUp = new Tile(posX, 0, 80, 80);
if (i == 1) {
tileRowUp.nameOfField =modelObj.field_list[1].name;
}
if (i == 2) {
tileRowUp.nameOfField =modelObj.field_list[2].name;
}
tileRowUp.show();
var tileColLeft = new Tile(0, posY, 80, 80);
if (i == 0) {
tileColLeft.nameOfField =modelObj.field_list[0].name;
}
tileColLeft.show();
var tileRowdown = new Tile(posX2, height - 80, 80, 80);
tileRowdown.show();
var tileColRight = new Tile(width - 80, posY2, 80, 80);
tileColRight.show();
}
var mysteriousCard1 = new Tile(170, 190, 100, 100);
mysteriousCard1.show();
var mysteriousCard2 = new Tile(570, 490, 100, 100);
mysteriousCard2.show();
var dice = new Tile(390, 390, 50, 50);
dice.show();
}
class Tile {
constructor(x, y, lar, alt, id_Field, nameOfField, TypeOfField) {
this.x = x;
this.y = y;
this.lar = lar;
this.alt = alt;
this.id_Field = id_Field;
this.nameOfField = nameOfField;
this.TypeOfField = TypeOfField;
}
show() {
//noStroke();
rect(this.x, this.y, this.lar, this.alt);
text(this.nameOfField, this.x + 10, this.y + 10);
}
}

TA貢獻2051條經驗 獲得超10個贊
我使用 Json 和 ajax 從數據庫中獲取數據。這是我在 js 中的代碼
var fields = [];
for (var i = 0; i < 40; i++) {
fields[i] = { id_Field: 0, nameOfField2: 'what', TypeOfField: 0 }
}
$(document).ready(function () {
//Call EmpDetails jsonResult Method
$.getJSON("Boards/Json",
function (json) {
var tr;
//Append each row to html table
for (var i = 0; i < json.length; i++) {
fields[i].nameOfField2 = json[i].name;
fields[i].id_Field = json[i].id_field;
fields[i].TypeOfField = json[i].field_type;
tr = $('<tr/>');
tr.append("<td>" + fields[i].id_Field + "</td>");
tr.append("<td>" + fields[i].nameOfField2 + "</td>");
tr.append("<td>" + fields[i].TypeOfField + "</td>");
$('table').append(tr);
}
});
});
function setup() {
createCanvas(880, 880);
background(255);
for (var i = 0; i < 11; i++) {
var posX = map(i, 0, 11, 0, width);
var posY = map(i, 0, 11, 0, height);
var posX2 = map(i, 0, 11, 0, width);
var posY2 = map(i, 0, 11, height, 0);
var tileRowUp = new Tile(posX, 0, 80, 80);
if (i == 1) {
tileRowUp.nameOfField = fields[i].nameOfField2;
}
// tileRowUp[2].nameOfField = fields[2].nameOfField2;
tileRowUp.show();
var tileColLeft = new Tile(0, posY, 80, 80);
tileColLeft.show();
var tileRowdown = new Tile(posX2, height - 80, 80, 80);
tileRowdown.show();
var tileColRight = new Tile(width - 80, posY2, 80, 80);
tileColRight.show();
}
var mysteriousCard1 = new Tile(170, 190, 100, 100);
mysteriousCard1.show();
var mysteriousCard2 = new Tile(570, 490, 100, 100);
mysteriousCard2.show();
var dice = new Tile(390, 390, 50, 50);
dice.show();
}
class Tile {
constructor(x, y, lar, alt, id_Field, nameOfField, TypeOfField) {
this.x = x;
this.y = y;
this.lar = lar;
this.alt = alt;
this.id_Field = id_Field;
this.nameOfField = nameOfField;
this.TypeOfField = TypeOfField;
}
show() {
//noStroke();
rect(this.x, this.y, this.lar, this.alt);
text(this.nameOfField, this.x + 10, this.y + 10);
}
}
這段代碼
tr = $('<tr/>');
tr.append("<td>" + fields[i].id_Field + "</td>");
tr.append("<td>" + fields[i].nameOfField2 + "</td>");
tr.append("<td>" + fields[i].TypeOfField + "</td>");
$('table').append(tr);
向我顯示列和行中的數據,它可以工作,但現在這是我的問題
tileRowUp.nameOfField = fields[i].nameOfField2;
這不會將數據分配給tileRowUp.nameOfField,當我顯示它時,我看到這個 https://imgur.com/rvxgZiu 它就像fields[i].nameOfField2具有相同的默認值......看起來字段 [] 值是本地的,只有在這里:
//Append each row to html table
for (var i = 0; i < json.length; i++) {
fields[i].nameOfField2 = json[i].name;
fields[i].id_Field = json[i].id_field;
fields[i].TypeOfField = json[i].field_type;
tr = $('<tr/>');
tr.append("<td>" + fields[i].id_Field + "</td>");
tr.append("<td>" + fields[i].nameOfField2 + "</td>");
tr.append("<td>" + fields[i].TypeOfField + "</td>");
$('table').append(tr);
}
有人有一些想法我做錯了什么?
添加回答
舉報