我正在开发angularjs和MVC应用程序,我的应用程序工作正常,但我在控制台中出错。
错误:$ location:isrcharg
错误的$ location.search()参数类型
$location#search()
调用的第一个参数必须是字符串或对象
这是我的angularjs导航服务:
self.goBack = function () {
$window.history.back();
}
self.navigateTo = function (path, params) {
if (params === null) {
$location.path(MyApp.rootPath + path);
}
else {
$location.path(MyApp.rootPath + path).search(params);
}
};
self.refreshPage = function (path) {
$window.location.href = MyApp.rootPath + path;
};
self.clone = function (obj) {
return JSON.parse(JSON.stringify(obj))
};
self.querystring = function (param) {
if ($location.search !== null)
return $location.search()[param];
else
return null;
};
self.resetQueryParams = function () {
$location.url($location.path());
};
return this;
};
上面的代码是一个普通的工厂,所以在将它注入我的控制器之后,我将如何导航
内角我用viewModelHelper.navigateTo("/home");
然后,如果我想导航到mvc页面我使用
viewModelHelper.refreshPage("index");
$location.path(MyApp.rootPath + path).search(params);
答案 0 :(得分:2)
我的参数没有定义。我如何解决这个未定义的问题
self.navigateTo = function (path, params) {
if ( ̶p̶a̶r̶a̶m̶s̶ ̶=̶=̶=̶ ̶n̶u̶l̶l̶ !params) {
$location.path(MyApp.rootPath + path);
}
else {
$location.path(MyApp.rootPath + path).search(params);
}
};
OR
self.navigateTo = function (path, params) {
if (params) {
$location.path(MyApp.rootPath + path).search(params);
}
else {
$location.path(MyApp.rootPath + path);
}
};
在上面的示例中,如果.search
变量为truthy,代码将仅执行params
方法。
在JavaScript中,truthy值是在布尔上下文中计算时被视为true
的值。所有值均为truthy,除非它们被定义为falsy(即false
,0
,""
,null
,{{1除外}和undefined
)。
有关详细信息,请参阅MDN JavaScript Reference - truthy