我刚开始使用RequireJS,但是我被困在我想要使用一个js文件的部分,其中有两个define(),如下所示:
文件名:test.js
define('test1', ['jquery'], function() {
return {
method1 : function () {
console.log("test1 - method 1");
},
method2 : function () {
console.log("test1 - method 2");
}
}
});
define('test2', ['jquery'], function() {
return {
method1 : function () {
console.log("test2 - method 1");
},
method2 : function () {
console.log("test2 - method 2");
}
}
});
Run Code Online (Sandbox Code Playgroud)
我还有一个bootstrap,js文件,由RequireJS框架自动加载:
require(['jquery', 'test', 'test2'], function ( $, t1, t2 ) {
console.log(t1);
});
Run Code Online (Sandbox Code Playgroud)
它确实找到了第二个参数,即"测试"文件.只是,它返回一个' null '.它找不到'test2',因为它试图寻找一个名为'test2.js'的文件.其实我想做的事情如下:
require(['jquery', 'test.test1', 'test.test2'], function ( $, …Run Code Online (Sandbox Code Playgroud) 我正在尝试为自己的框架创建一个插件架构的方法.我已经阅读了很多主题,并在这里和其他网站发布.基本上我来到以下解决方案,似乎是PHP(目前)唯一的好选择.
这个想法是每个类都像类一样扩展了一种观察者.所以Template类,BaseController等总是扩展一个Plugin类.
class BaseController extends Plugin
{
public function __construct()
{
// Plugin check, notify all loaded plugins
$this->checkForEarlyHooks();
// Init some standard stuff
$this->view = new Template();
$this->baseLayout = 'layout.html';
$this->something = new Something();
// Plugin check, notify all loaded plugins
$this->checkForLateHooks();
}
}
Run Code Online (Sandbox Code Playgroud)
所以这里基本上发生的是当indexController扩展baseController时,插件检查就完成了.在这种情况下为构造函数.在实际调用Action方法之前,如果要使用插件进行某种登录检查,这可能很方便.
Plugin类可以解析从哪个类调用,并知道在加载的插件中要查找的函数.
另请注意,它会检查加载的插件列表2次.在构造函数中加载(早期)之前的一个,并且在加载所有变量(晚期)时加载一个.
我还可以在"checkForLateHooks()"函数中添加变量.因此钩子函数也可以操作它们,比如'baseLayout'变量.
钩子函数看起来像这样:
public function hookConstruct ( &$baseLayout )
{
$baseLayout = 'login.html';
}
Run Code Online (Sandbox Code Playgroud)
现在基本上我的问题是,这种方法有什么好处吗?我知道也有很多其他方法可以做到这一点.但我主要不想在以后遇到设计问题.现在看来这是一个好主意,但你永远不会知道事情会如何发挥作用......
如果我记得正确(从我读过的所有帖子中),这有点像WordPress(以及其他一些框架).
我正在尝试使用COM函数打开并使用PHO读取Word文档的内容.但每当我尝试阅读内容时,它会给我以下错误:
致命错误:带有消息的未捕获异常'com_exception'' 源: Microsoft Word
描述:此命令不可用,因为没有文档打开.
我有以下代码:
$word = new \COM ( "word.application" ) or die ( "Could not initialise MS Word object." );
$word->Documents->Open ( realpath("test.doc" ) );
// Extract content.
$content = (string) $word->ActiveDocument->Content;
echo $content;
$word->ActiveDocument->Close(false);
$word->Quit();
$word = null;
unset($word);
Run Code Online (Sandbox Code Playgroud)
我100%确定Word文档存在.我已经多次检查了这个.该文件的权限设置为Full Control.所以这也不可能.
我也读过关于php.net的评论.它说IIS引起了一个问题(我已经运行了).他的解决方案如下:
无论如何,我仍然没有这个工作.任何人都知道怎么可能修复这个错误...... ???
有没有一种神奇的方法,当从对象调用某个方法时,首先调用一个魔术方法.有点像__call方法,但只有在找不到方法时才会触发此方法.
所以在我的情况下,我喜欢这样的事情:
class MyClass
{
public function __startMethod ( $method, $args )
{
// a method just got called, so this is called first
echo ' [start] ';
}
public function helloWorld ( )
{
echo ' [Hello] ';
}
}
$obj = new MyClass();
$obj->helloWorld();
//Output:
[start] [Hello]
Run Code Online (Sandbox Code Playgroud)
PHP中是否存在类似的内容?
我遇到了OWIN和Katana,我现在正试图了解这是什么.据我所知,它只是试图将Web应用程序与Web主机分开.
所以它基本上说当你构建一个ASP.NET MVC Web应用程序时,你在部署Web应用程序时绑定到IIS.使用OWIN/Katana你没有那个问题.这就是我从中理解的,这是正确的吗?
如果是这样,那么为什么我想在我的项目中使用OWIN/Katana时,我只需使用"mod_mono"将我的ASP.NET Web应用程序部署到NGINX,Apache等服务器上.
因为这基本上是OWIN项目的目标吗?但是我觉得将OWIN/Katana实现到我的Web应用程序然后只是简单地使用MVC 的Web API然后将其部署到Mono环境就更麻烦了.如果我愿意,我甚至可以在Linux中运行它.
所以什么时候应该选择OWIN/Katana而不是Mod Mono?它到底真的有所作为吗?
我正在使用MVC3和实体框架,但我来到了一个点,我需要来自不同表的更多数据.通常我会做这样的事情从表中获取数据:
Table: Users
id
username
Run Code Online (Sandbox Code Playgroud)
在代码中,我会做这样的事情来获得所有用户:
public static IEnumerable<Users> GetUsers( int userId )
{
MyEntities ent = new MyEntities();
return from g in ent.Users
where g.OwnerUserId == userId
select g;
}
Run Code Online (Sandbox Code Playgroud)
所以这会让我所有的用户回来.
但是用户可以加入一个组,我必须从特定组中获取所有用户名.
Table: userGroups
id
fk_user_id
fk_group_id
Run Code Online (Sandbox Code Playgroud)
现在,如果我使用此代码:
public static IEnumerable<userGroups> GetUsersFromGroup( int groupId )
{
MyEntities ent = new MyEntities();
return from g in ent.userGroups
where g.OwnerUserId == userId
select g;
}
Run Code Online (Sandbox Code Playgroud)
现在显然这只返回"userGroups"表中的数据.但不知何故,我还需要Users表中的用户名.我怎样才能获得这些数据并仍然将我的"userGroups"作为IEnumerable返回?
在SQL中我只是做一个LEFT JOIN,但我无法弄清楚它是如何工作的.
有ORM时存储库模式有什么用?
例.假设我有以下(虚构)表:
表:用户
pk_user_id
fk_userrole_id
username
Run Code Online (Sandbox Code Playgroud)
表:userroles
fk_userrole_id
role
Run Code Online (Sandbox Code Playgroud)
现在有一个orm我可以简单地把它放在一个模型文件中:
$user = ORM::load('users', $id);
Run Code Online (Sandbox Code Playgroud)
现在$ user已经是我的对象,可以轻松加载:
(如果事物是自动的单数/复数,会更好)
foreach ( $user->userroles()->role as $role )
{
echo $role;
}
Run Code Online (Sandbox Code Playgroud)
现在使用Repository模式,我必须为Users创建一个存储库,为Roles创建一个存储库.存储库还需要各种函数来为我检索数据并存储它.此外,它需要与Entity模型一起使用.所以我也必须创造所有这些.
对我来说,看起来很多东西...当我可以简单地获得像上面描述的ORM数据.而且我可以轻松存储它:
ORM ::店($用户);
在这种情况下,它不仅会将用户对象存储到数据库中,还会将对"角色"对象所做的任何更改存储起来.所以不需要像存储库模式那样需要任何额外的工作......
所以我的问题基本上是,为什么我要使用带有ORM的存储库模式?我已经看过教程在哪里使用该模式(与Doctrine一样).但它对我来说真的没有任何意义......任何人都可以解释它与ORM的结合使用.??
在我的MVC3应用程序中,我有一个下拉列表.在那里我必须显示所有结果,但必须禁用某些结果,以便它们不可选择.我怎样才能做到这一点?
这就是我现在所拥有的.它只是没有显示已将Disabled设置为true的玩家.
@Html.DropDownListFor(m => m.Position1, Model.SelectedTeam.TeamPlayers
.Where(c => c.Player.Disabled == false)
.OrderBy(t => t.Player.Lastname)
.ToSelectList(m => m.FullName, m => m.PlayerId))
Run Code Online (Sandbox Code Playgroud)
那么还有另一种方法来显示已禁用的播放器,但输出将是这样的,而不是完全隐藏它们:
<select>
<option>Player 1</option>
<option disabled="disabled">Player 2</option>
<option>Player 3</option>
<option>Player 4</option>
<option disabled="disabled">Player 5</option>
<option>Player 6</option>
</select>
Run Code Online (Sandbox Code Playgroud)
DropDownListFor可以实现吗?
在我的html页面中,我在容器div中有两个div.两个内部div有一个'位置:aboslute'.因为它们必须放在容器div的左下角.
当容器div只有一个内部div时,这很有效.但是当我添加第二个div时,第二个div放在第一个内部div的顶部.这是有道理的.但现在我正试图找到一种方法让它们彼此相邻,而不是彼此重叠.
生成内部div.所以我无法手动为他们添加ID.他们只有一个班级名称.
示例:
<div id="container">
<div class="icon">ICON1</div>
<div class="icon">ICON2</div>
</div>
Run Code Online (Sandbox Code Playgroud)
#container {
position: relative;
width: 200px;
height: 200px;
border: 1px solid red;
}
.icon {
position: absolute;
bottom: 0;
left: 0;
border: 1px solid green;
}
Run Code Online (Sandbox Code Playgroud)
任何人都知道如何解决这个问题?
我找不到任何关于此的信息,但是,我如何在ActionBarSherlock中以编程方式切换选项卡?
通常,当我想切换视图时,我会使用以下内容:
Intent intentSecondView = new Intent(this, SecondView.class);
this.startActivity(intentSecondView);
Run Code Online (Sandbox Code Playgroud)
但显然这不起作用,因为选项卡中的视图是片段.
那么有什么方法可以在使用ActionBarSherlock时通过代码在选项卡之间切换?
这就是我当前添加带有标签的操作栏的方法.
在我的onCreate方法中,我有:
mViewPager = new ViewPager(this);
mViewPager.setId(R.id.pager);
setContentView(mViewPager);
ActionBar bar = getSupportActionBar();
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
mTabsAdapter = new TabsAdapter(this, mViewPager);
mTabsAdapter.addTab(
bar.newTab().setText("Fragment 1"),
MyFragment1.class, null);
mTabsAdapter.addTab(
bar.newTab().setText("Fragment 2"),
MyFragment2.class, null);
Run Code Online (Sandbox Code Playgroud)
我在AndroidManifest文件中没有添加任何内容来创建选项卡.这都是编程方式.