我正在努力学习AngularJS.我第一次尝试每秒获取新数据:
'use strict';
function dataCtrl($scope, $http, $timeout) {
$scope.data = [];
(function tick() {
$http.get('api/changingData').success(function (data) {
$scope.data = data;
$timeout(tick, 1000);
});
})();
};
Run Code Online (Sandbox Code Playgroud)
当我通过将线程休眠5秒来模拟慢速服务器时,它会在更新UI并设置另一个超时之前等待响应.问题是当我重写上述内容以使用Angular模块和DI来创建模块时:
'use strict';
angular.module('datacat', ['dataServices']);
angular.module('dataServices', ['ngResource']).
factory('Data', function ($resource) {
return $resource('api/changingData', {}, {
query: { method: 'GET', params: {}, isArray: true }
});
});
function dataCtrl($scope, $timeout, Data) {
$scope.data = [];
(function tick() {
$scope.data = Data.query();
$timeout(tick, 1000);
})();
};
Run Code Online (Sandbox Code Playgroud)
这仅在服务器响应很快时才有效.如果有任何延迟,它会在不等待响应的情况下每秒发送1个请求,并且似乎清除了UI.我想我需要使用回调函数.我试过了:
var x = Data.get({}, function () { });
Run Code Online (Sandbox Code Playgroud)
但得到一个错误:"错误:destination.push不是一个函数"这是基于$ …
我需要一个控制器来返回JSON以供JavaScript使用,所以我继承了ApiController类,但它的行为并不像我预期的那样.Apress书籍Pro ASP.NET MVC 4以及我发现的大多数在线示例给出了以下示例:
public class ServicesController : ApiController
{
public string[] MethodFruit()
{
return new string[] { "Apple", "Orange", "Banana" };
}
Run Code Online (Sandbox Code Playgroud)
通过URL访问:
http://mysite/services/methodfruit
Run Code Online (Sandbox Code Playgroud)
但这永远不会奏效 - 找不到资源.我可以使用的唯一方法是让控制器为每个HTTP动词包含不同的方法,然后:
http://mysite/api/services
Run Code Online (Sandbox Code Playgroud)
哪个调用GET方法.
我检查了Apress网站,但他们似乎没有任何论坛,目前的源代码是在VS 2012,我没有使用.我检查了源文件,他们似乎认为前一种方法应该有效.前一种方法是否不再受支持?
我的 webpack 项目有一个新的错误:
浏览器列表:caniuse-lite 已过时。请运行下一个命令
npm update caniuse-lite browserslist
我还没有解决,但潜在的问题是:我的 package.json 中没有caniuse-lite - 那么它在哪里?
顺便说一句:运行该命令没有区别。
很明显是依赖或者依赖的依赖,无止境……
npmjs caniuse-lite列出了 80 个依赖包。
有没有办法搜索包的依赖关系图以轻松找到我的 package.json 文件中的哪个包是该行某处依赖于 caniuse-lite 的父包?
我正试图通过点击按钮发送一个动作.
我创建了我的组件.我将它连接到由提供商传递给组件的商店.但是我收到一个错误:
未捕获的TypeError:this.doSearchClick不是函数
我有我的进口:
import React, { Component, PropTypes } from 'react';
import { connect } from 'react-redux';
import action_doSearch from '../../actions/searchActions'
Run Code Online (Sandbox Code Playgroud)
我的组件:
class SearchForm extends React.Component {
constructor(props, doSearchClick) {
super(props);
this.search = this.search.bind(this);
this.doSearchClick = doSearchClick;
}
search() {
this.doSearchClick('bla bla from search');
}
render() {
return(
<div>
<button onClick={this.search}>Search</button>
</div>
);
}
}
Run Code Online (Sandbox Code Playgroud)
不确定是否需要:
SearchForm.propTypes = {
doSearchClick: PropTypes.func.isRequired
};
Run Code Online (Sandbox Code Playgroud)
最后的connect东西:
const mapStateToProps = (state) => {
return {
state
}
};
const mapDispatchToEvents = …Run Code Online (Sandbox Code Playgroud)