【发布时间】:2015-06-22 11:31:42
【问题描述】:
我正在尝试在 canjs 中制作应用程序的 MVC 结构。为此,我使用 requireJS 来分隔不同文件中的代码。
我在谷歌搜索过,我正在关注这个tutorial,但在那个教程中我找不到访问不同模块中的模块变量。因此我遵循this 方法这样做。
但我无法做到这一点。 这是我的代码:
需要jsconfig.js 文件:
requirejs.config({
paths :{
enforceDefine: true,
waitSeconds : 0,
jquery : "https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min",
main : "view/main",
player : "view/player",
PlayerModel : "/models/PlayerModel",
hbs : "/models/view/js/handlebars",
fixture : "/models/view/js/can.fixture",
can : "/models/view/js/can.jquery"
}
});
main.js:
require(["player"],function(player){
player.PlayerModel();
});
我想在我的控制器中使用该模型方法。
player.js:
define(['PlayerModel'],function(){
function PlayerModel(){
var Player = PlayerModel.Player;
Players =can.Control({ defaults :{view:view/players.hbs' }},{
init: function(){
this.element.html(can.view(this.options.view, {
players: this.options.players
}));
}
$(document).ready(function(){
$.when(Player.findAll()).then(
function(playersResponse){
var players = playersResponse[0];
new Players('.players', {
players: players
});
});
});
}
});
PlayerModel.js:
define(function(){
var Player = can.Model({
findAll: 'GET /models/players.json',
findOne: 'GET /players.json/{id}'
});
return {
Player:Player
}
});
正在加载每个文件(在 network tab-chrome devtools 中看到),但输出中没有填充任何内容。
谁能帮帮我? 提前致谢!
【问题讨论】:
-
看起来在
PlayerModel()内部,您正在访问PlayerModel.Player。看起来你没有在任何地方定义过。 -
我已经定义好了。更新了我上面的代码。
标签: javascript requirejs canjs