我有4种状态:dashboard,dahboard.main,dashboard.minor,login.仪表板是抽象的,它是.minor和.main状态的父状态.以下是我的代码:
.state('dashboard', {
url: "/dashboard",
abstract: true,
templateUrl: "views/dashboard.html",
resolve: {
auth: function ($q, authenticationSvc) {
var userInfo = authenticationSvc.getUserInfo();
if (userInfo) {
return $q.when(userInfo);
} else {
return $q.reject({ authenticated: false });
}
}
},
controller: "DashboardCtrl",
data: { pageTitle: 'Example view' }
})
.state('dashboard.main', {
url: "",
templateUrl: "views/main.html",
controller: "DashboardCtrl",
data: { pageTitle: 'Main view' }
})
Run Code Online (Sandbox Code Playgroud)
正如您在仪表板状态中看到的,我有解决方案选项.如果他没有被授权,我想将用户重定向到登录页面.出于这个原因,我使用特殊的authenticationSvc服务:
.factory("authenticationSvc", ["$http", "$q", "$window", function ($http, $q, $window) { …Run Code Online (Sandbox Code Playgroud) 让我先说一下我是ReactJS的新手.我试图通过创建一个使用React填充数据的简单站点来学习.我有一个JSON文件,其中包含将通过map循环的链接数据.
我已经尝试将其设置为组件状态,然后通过道具将其传递给导航栏链接但我得到"未捕获的TypeError:无法读取null的属性'数据'"
我试图四处寻找解决方案但找不到任何东西.
注意:当我尝试对对象进行硬编码并以这种方式映射它时,返回的映射是未定义的.但是我不确定它是否与setState错误直接相关.
/** @jsx React.DOM */
var conf = {
companyName: "Slant Hosting"
};
var NavbarLinks = React.createClass({
render: function(){
var navLinks = this.props.data.map(function(link){
return(
<li><a href={link.target}>{link.text}</a></li>
);
});
return(
<ul className="nav navbar-nav">
{navLinks}
</ul>
)
}
});
var NavbarBrand = React.createClass({
render: function(){
return(
<a className="navbar-brand" href="#">{conf.companyName}</a>
);
}
});
var Navbar = React.createClass({
getInitalState: function(){
return{
data : []
};
},
loadNavbarJSON: function() {
$.ajax({
url: "app/js/configs/navbar.json",
dataType: 'json',
success: function(data) {
this.setState({
data: data
}); …Run Code Online (Sandbox Code Playgroud) 所以我有这个:
let total = newDealersDeckTotal.reduce(function(a, b) {
return a + b;
},
0);
console.log(total, 'tittal'); //outputs correct total
setTimeout(() => {
this.setState({dealersOverallTotal: total});
}, 10);
console.log(this.state.dealersOverallTotal, 'dealersOverallTotal1'); //outputs incorrect total
Run Code Online (Sandbox Code Playgroud)
newDealersDeckTotal只是一个数字数组,[1, 5, 9]但是this.state.dealersOverallTotal不能给出正确的总数但是total呢?我甚至提出了超时延迟,看看是否解决了这个问题.任何明显的或我应该发布更多的代码?
来自Stroustrup的TC++ PL,第3版,第21.3.3节:
如果我们尝试读入变量v并且操作失败,则v的值应该保持不变(如果v是istream或ostream成员函数处理的类型之一,则它不会改变).
以下示例似乎与上述引用相矛盾.基于上面的引用,我期待v的值保持不变 - 但它会变为零.对这种明显的矛盾行为有什么解释?
#include <iostream>
#include <sstream>
int main( )
{
std::stringstream ss;
ss << "The quick brown fox.";
int v = 123;
std::cout << "Before: " << v << "\n";
if( ss >> v )
{
std::cout << "Strange -- was successful at reading a word into an int!\n";
}
std::cout << "After: " << v << "\n";
if( ss.rdstate() & std::stringstream::eofbit ) std::cout << "state: eofbit\n";
if( ss.rdstate() & std::stringstream::failbit ) std::cout << "state: failbit\n"; …Run Code Online (Sandbox Code Playgroud) 我正在研究todo应用程序.这是违规代码的一个非常简化的版本.我有一个复选框:
<p><input type="checkbox" name="area" checked={this.state.Pencil} onChange={this.checkPencil}/> Writing Item </p>
Run Code Online (Sandbox Code Playgroud)
这是调用复选框的函数:
checkPencil(){
this.setState({
pencil:!this.state.pencil,
});
this.props.updateItem(this.state);
}
Run Code Online (Sandbox Code Playgroud)
updateItem是一个映射到dispatch to redux的函数
function mapDispatchToProps(dispatch){
return bindActionCreators({ updateItem}, dispatch);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,当我调用updateItem action和console.log状态时,它总是落后一步.如果取消选中该复选框而不是true,我仍然会将true状态传递给updateItem函数.我是否需要调用另一个函数来强制状态更新?
作为一个刚刚开始使用MVC的相当有经验的ASP.Net开发人员,我发现自己正在努力将我的思维方式从传统的"服务器控件和事件处理程序"的处理方式转变为更加动态的MVC方式.我想我正在慢慢地到达那里,但有时MVC"魔法"会让我失望.
我目前的情况是创建一个网页,允许用户浏览本地文件,将其上传到服务器并重复此操作,直到他有一个要使用的文件列表.当他对文件列表(将在页面上的网格中显示)感到满意时,他将单击一个按钮来处理文件并提取将存储在数据库中的一些数据.
最后一部分并不是那么重要,现在我正在努力处理像构建文件列表这样简单的事情,并在请求之间保持该列表.在传统方法中,这将非常简单 - 数据将保存在ViewState中.但是在MVC中我需要在控制器和视图之间传递数据,而我并没有完全了解它应该如何工作.
我想我最好发布我的相当不完整的编码尝试来解释这个问题.
为了保存我的文件列表数据,我创建了一个viewmodel,它基本上是一个类型化的文件列表,还有一些额外的元数据:
public class ImportDataViewModel
{
public ImportDataViewModel()
{
Files = new List<ImportDataFile>();
}
public List<ImportDataFile> Files { get; set; }
...
Run Code Online (Sandbox Code Playgroud)
在视图中,我有一个用于浏览和上传文件的表单:
<form action="AddImportFile" method="post" enctype="multipart/form-data">
<label for="file">
Filename:</label>
<input type="file" name="file" id="file" />
<input type="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
该视图使用viewmodel作为其模型:
@model MHP.ViewModels.ImportDataViewModel
Run Code Online (Sandbox Code Playgroud)
这会将文件发送到我的操作:
public ActionResult AddImportFile(HttpPostedFileBase file, ImportDataViewModel importData)
{
if (file.ContentLength > 0)
{
ImportDataFile idFile = new ImportDataFile { File = file };
importData.Files.Add(idFile);
}
return View("DataImport", importData);
}
Run Code Online (Sandbox Code Playgroud)
此操作返回DataImport页面的视图以及包含文件列表的viewmodel实例.
这可以很好地工作到某一点,我可以浏览文件并上传它,我可以在动作中看到viewmodel数据,然后如果我在视图中放置一个断点并调试"this.Model",一切都是精细.
但是,如果我尝试上传另一个文件,在AddImportFile操作中放置断点时,importData参数为空.因此,视图显然没有将其模型的当前实例传递给操作.
在我经历的MVC示例中,模型实例被"神奇地"传递给action方法作为参数,那么为什么它现在为空呢? …
我有工作要做,我需要你的帮助.我们想要实现一个FSM - Finite State Machine,以识别char序列(如:A,B,C,A,C),并告诉它是否被接受.
我们认为,实行三类:State,Event和Machine.该state班提出的一个节点FSM,我们认为有实现它State design pattern,每个节点将抽象类扩展状态和每一个类可以处理不同类型的事件,并指示过渡到一个新的状态.你认为这是个好主意吗?
第二件事,我们不知道如何保存所有过渡.我们再一次考虑用某种方式来实现它,它具有map起点并且在下一个状态下获得某种向量,但我不确定这是一个好主意.
我很乐意得到一些如何实现它的想法,或者你可以给我一些起点.
我应该如何保存FSM,这意味着我应该如何在程序开始时构建树?我用Google搜索并找到了很多例子但没有任何帮助我的东西.
非常感谢.
我有一个状态数组,让我们说这个.state.arr.我想在此属性中添加一些内容,然后更改一些属性.
选项1
onChange(event){
this.state.arr.push('newvalue');
...
this.setState({some:'val',arr:this.state.arr})
}
Run Code Online (Sandbox Code Playgroud)
选项2
onChange(event){
var newArr = this.state.arr;
...
newArr.push('newvalue');
...
this.setState({some:'val',arr:newArr})
}
Run Code Online (Sandbox Code Playgroud)
所以..我知道this.state应该被视为不可变的.但是可以像在选项1中那样使用它,我仍然从中设置状态,或者我需要使用类似选项2的东西,因此总是首先在内存中复制
我正在努力在Haskell中实现UCT算法,这需要大量的数据杂耍.没有太多细节,它是一个模拟算法,在每个"步骤",基于一些统计属性选择搜索树中的叶节点,在该叶子上构造新的子节点,并且对应于新叶及其所有祖先都会更新.
鉴于所有这些杂耍,我并不是非常敏锐,无法弄清楚如何使整个搜索树成为Okasaki的一个不可改变的数据结构.相反,我一直在玩STmonad,创建由可变STRefs 组成的结构.一个人为的例子(与UCT无关):
import Control.Monad
import Control.Monad.ST
import Data.STRef
data STRefPair s a b = STRefPair { left :: STRef s a, right :: STRef s b }
mkStRefPair :: a -> b -> ST s (STRefPair s a b)
mkStRefPair a b = do
a' <- newSTRef a
b' <- newSTRef b
return $ STRefPair a' b'
derp :: (Num a, Num b) => STRefPair s a b -> ST s …Run Code Online (Sandbox Code Playgroud) 这有点是一个平凡的问题,但在我看来,在WPF中没有内置的方法.似乎只有WindowState作为枚举的属性没有帮助,因为我无法判断窗口是否在最小化之前处于Normal或Maximized状态.
单击任务栏图标时,窗口正在按预期恢复,假设其先前状态,但我似乎无法找到任何已定义的方法.
所以我一直想知道我是否只是缺少一些东西,或者我是否需要使用一些自定义交互逻辑.
(我将发布我当前的解决方案作为答案)