Angular,函数返回true但ng-show不起作用

时间:2016-10-11 21:05:29

标签: javascript angularjs angularjs-directive ng-show

如果单击链接,

showOrHide函数将返回true。

我使用alert和console.log函数测试了这段代码,但是如果我想将这段代码测试成ng-show或ng-hide指令,它就不会工作了。我无法理解这个问题。

Sum:函数返回false,如果我点击某个链接则返回true 但真实和错误在ng-show中不起作用。

angular.js文件



$scope.showOrHide = function (value) {
        if (typeof value !== 'undefined')
        {
            return alert(true);
            //console.log("true");
            //return true;
        }else {
            return alert(false);
            //console.log("false");
            //return false;
        }
    };
    $scope.projectId = $stateParams.projectId;
    $scope.showOrHide($stateParams.projectId);




html文件



<tr ng-repeat="n in data.projects track by $index"
    ng-href="@{{n.id}}"
    ui-sref="goTo({ projectId: n.id })">
    <td>@{{n.project_code}}</td>
    <td>@{{n.project_name}}</td>
    <td class="text-primary">will add</td>
    <td class="text-primary">will add</td>
    <td class="text-primary">@{{n.status}}</td>
    <td ng-show="showOrHide">test</td>
</tr>
&#13;
&#13;
&#13;

5 个答案:

答案 0 :(得分:1)

1.hour.ago基于函数而非变量,因此您需要将其作为函数编写。

HTML:

Time.now

JS:

ng-show

答案 1 :(得分:1)

如果我理解了你想要实现的目标(仅在$ stateParams.projectId存在时显示该元素),你可以使用你已经设置的变量,所以删除函数和只需使用以下内容:

cotroller:

app.controller('myController', function( $scope, $stateParams) {

  // other code here...

  $scope.projectId = $stateParams.projectId || false;
});

视图:

<tr ng-repeat="n in data.projects track by $index"
    ng-href="@{{n.id}}"
    ui-sref="goTo({ projectId: n.id })">
    <td>@{{n.project_code}}</td>
    <td>@{{n.project_name}}</td>
    <td class="text-primary">will add</td>
    <td class="text-primary">will add</td>
    <td class="text-primary">@{{n.status}}</td>
    <td ng-show="projectId">test</td>
</tr>

答案 2 :(得分:1)

我放弃所有解决方案,因为这些都没有用,所以我没有修改我的代码。我改变了所有这些。

这是解决方案。

JS档案

$scope.checkThis = true;

$scope.isShow = function (number) {
    return number;
};
$scope.toFalse = function () {
    $scope.checkThis = false;
};
$scope.toTrue = function () {
    $scope.checkThis = true;
};

HTML文件

<tr ng-repeat="n in data.projects track by $index"
    ng-href="@{{n.id}}"
    ui-sref="goTo({ projectId: n.id })">
    <td>@{{n.project_code}}</td>
    <td>@{{n.project_name}}</td>
    <td class="text-primary">will add</td>
    <td class="text-primary">will add</td>
    <td class="text-primary">@{{n.status}}</td>
    <td class="text-primary" ng-click="toFalse()"
                        ng-show="isShow(checkThis)">test</td>
                    </tr>

我认为这很简单。我反过来浪费了3个小时。

答案 3 :(得分:0)

创建结果变量,如:

$scope.toShowOrToHide = $scope.showOrHide($stateParams.projectId);

和HTML:

<td ng-show="toShowOrToHide">test</td>

并且JS没有警报地返回:

$scope.showOrHide = function (value) {
    return (typeof value !== 'undefined');
};

编辑:

$scope.toShowOrToHide = function() {
    return $scope.showOrHide($stateParams.projectId);
);

和HTML:

<td ng-show="toShowOrToHide()">test</td>

你可能已经决定了什么适合你......

答案 4 :(得分:0)

第一

$scope.stateParams = $stateParams;

然后

ng-show="stateParams.projectId"

当参数更改时,不需要任何功能并且值会自动更新。