我正在使用$stateProvider我的路线配置.我想利用他们提供的自定义数据将一些自定义数据从一个部分页面传递到另一个部分页面(on ng-click).
这是我到目前为止最好的:
将自定义数据附加到状态对象
您可以将自定义数据附加到状态对象(我们建议使用数据属性以避免冲突).
// Example shows an object-based state and a string-based state
var contacts = {
name: 'contacts',
templateUrl: 'contacts.html',
data: {
customData1: 5,
customData2: "blue"
}
}
$stateProvider
.state(contacts)
.state('contacts.list', {
templateUrl: 'contacts.list.html',
data: {
customData1: 44,
customData2: "red"
}
})
Run Code Online (Sandbox Code Playgroud)
通过上面的示例,您可以访问如下数据:
function Ctrl($state){
console.log($state.current.data.customData1) // outputs 5;
console.log($state.current.data.customData2) // outputs "blue";
}
Run Code Online (Sandbox Code Playgroud)
假设我有另一个名为customers的状态,它有自己的模板和控制器.如何在客户控制器/视图中更改联系人状态数据对象的值?即:我想改变这个:
data: {
customData1: 44,
customData2: "red"
}
Run Code Online (Sandbox Code Playgroud)
对此:
data: {
customData1: 100,
customData2: "green"
}
Run Code Online (Sandbox Code Playgroud)
任何指针或样品将不胜感激!
修改 - …
我正在调用外部API,并希望我的API可以进行单元测试.为此,我正在尝试包装HttpClient.我现在只需要一种方法.这是我的界面.
public interface IHttpClient
{
Task<string> GetStringAsync(string url);
}
Run Code Online (Sandbox Code Playgroud)
这就是我实现它的方式.
public class HttpClientWrapper:IHttpClient {private readonly HttpClient _httpClient;
public HttpClientWrapper()
{
// I could also inject this but I think this will be fine as is.
_httpClient = new HttpClient(new HttpClientHandler(), false);
}
public async Task<string> GetStringAsync(string url)
{
//validate url here
return await _httpClient.GetStringAsync(url);
}
Run Code Online (Sandbox Code Playgroud)
}
怀疑我有吗?这是正确的方法吗?设置bool参数会导致资源泄漏吗?关于HttpClient是否必须在每次通话中处理,我都读到了一些相互矛盾的想法.我采取了,但不是处置方,但我不是很确定.
如果有一种方法可以在没有包装器的情况下使用HttpClient但是使API可测试,那也会很棒.但到目前为止,我没能做到这一点.
谢谢,CleanKoder