我在angularjs工作,我是新手,我用这个做了一个应用程序。
我的应用程序中有几页,现在我的问题是我有两个导航到其他页面的按钮,但我的问题是当我点击按钮(跨度)时,它会打开同一页面两次。
任何人都可以帮我解决这个问题吗? 我的代码如下:
的javascript
$scope.foo = function() {
if ($scope.filterflg !== "1" ) {
$scope.filterflg = "1";
$scope.disabled = true;
gallery.pushPage("filter.html", {
params: FkCategory
});
$timeout(function() {
console.log("====timeout occured===");
$scope.filterflg = "0";
$scope.disabled = false;
}, 3000);
}
};
HTML
<ons-button id="test1" class="toolbar-button--quiet navigation-bar__line-height" ng-click="isProcessing=true;foo()" ng-model ="filterflg"
style="border: none; padding: 0 5px 0 0; margin-right:7px ;">
<i class="ion-android-options" style="font-size:24px; color: #FFFFFF;"></i>
</ons-button>
我在这个问题上已经浪费了10天,希望有些伙伴会帮我救我的工作..! :(
答案 0 :(得分:3)
ng-disabled对span不起作用。它仅适用于输入或按钮类型。
你有两个选择 -
将范围转换为按钮元素
使用像$ scope.isProcessing这样的变量来包装foo()函数。
$ scope.foo = function(){
if (!$scope.isProcessing) {
//...
$timeout(function() {
console.log("====timeout occured===");
$scope.filterflg = "0";
$scope.disabled = false;
$scope.isProcessing = false;
}, 3000);
}
};
<强> HTML 强>
<span ng-click="isProcessing=true;foo()"></span>
答案 1 :(得分:1)
将范围转换为按钮元素,并在第一次单击
后立即禁用该按钮$timeout
$scope.foo = function() {
just simply
$scope.disabled = false;
// Your other code
};
或使用标志检查页面是否已打开将解决您的问题
$scope.isFilteropen = false;
$scope.foo = function() {
if ($scope.isFilteropen == false) {
$scope.isFilteropen = true;
// your other code
}
};
答案 2 :(得分:0)
试试这个,
<span class="toolbar-button--quiet navigation-bar__line-height" ng-disabled="disabled" ng-click="disabled=true;foo();disabled=false;" ng-model ="filterflg"> </span>
从功能timer
中删除Foo()
。