我正在处理GalleryController
,我正在尝试添加一个名为setCurrent
的方法,该方法接受一个值并将其分配给
current
。如果没有传入任何值,我需要将current
设置为0
。
以下是我所写的内容,它似乎不正确:
(function() {
var app = angular.module('gemStore', []);
app.controller('GalleryController', function(){
this.current = 0;
this.setCurrent = setCurrent(intValue){
if(intValue === null){
this.current = 0;
}
else {
this.current = intValue;
}
};
});
app.controller('StoreController', function(){
this.products = gems;
});
app.controller('TabController', function(){
this.tab = 1;
this.setTab = function(newValue){
this.tab = newValue;
};
this.isSet = function(tabName){
return this.tab === tabName;
};
});
我应该首先按照要求中的说明设置this.current = intValue
吗?
答案 0 :(得分:1)
如果未传入任何值,则intValue
将为undefined
,而不是null
。所以你的功能体不起作用。
这里的另一个巨大的问题,我只能指望一个错字,就是你setCurrent
应该function
。
我不明白你帖子末尾的问题,但这会表现得很好:
this.setCurrent = function (intValue) {
if (!intValue) {
this.current = 0;
}
else {
this.current = intValue;
}
};
如果确实想要检查是否传入参数,那么唯一可靠的方法是检查arguments.length:
this.setCurrent = function (intValue) {
if (arguments.length === 0) {
this.current = 0;
}
else {
this.current = intValue;
}
};
但这对我来说似乎毫无意义。如果该值是假的,那么它显然已经为0或者它不是有效的数值。
答案 1 :(得分:1)
使用typeof
或angular.isUndefined(intValue)
而非null
:-)
this.setCurrent = function (intValue) {
if (typeof intValue=='undefined') { //if(angular.isUndefined(intValue))
this.current = 0;
}
else {
this.current = intValue;
}
};
以更好的方式: - )
this.setCurrent = function (intValue) {
if (typeof intValue!='undefined') { //if(!angular.isUndefined(intValue))
this.current = intValue;
}
};
答案 2 :(得分:1)
您可以使用角度提供的方法检查变量是否未定义,即angular.isDefined()
/ angular.isUndefined()
(首选检查角度方式)
this.setCurrent = function (intValue) {
if (angular.isDefined(intValue)) {
this.current = 0;
}
else {
this.current = intValue;
}
};
希望这可以帮助你,谢谢。
答案 3 :(得分:1)
您可以使用三元||操作者...
app.controller('GalleryController', function(){
this.current = 0;
this.setCurrent = function(pas_value) {
this.current = pas_value || 0;
};
});
答案 4 :(得分:0)
我想出了另外一种方法:
app.controller('GalleryController', function(){
this.current = 0;
this.setCurrent = function(intValue){
this.current = intValue || 0;
};
答案 5 :(得分:0)
<div ng-controller="ShellController as vm">
<header class="clearfix">
<ht-top-nav navline="vm.navline"></ht-top-nav>
</header>
<section id="content" class="content">
<!--<div ng-include="'app/layout/sidebar.html'"></div>-->
<div ui-view></div>
<div class="ib-loading">Loading ...</div>
</section>
</div>