2016-08-22 34 views
0

我有一些问题。我写了通过按钮单击来清理输入的函数,但是当我使用$ stateProvider并且在状态中执行清理时它不起作用。AngularJS:输入清洁不能在状态

app.js:

<script> 
    var app = angular.module("app", ['ui.router']); 
    app.config(function($stateProvider, $urlRouterProvider){ 

     $urlRouterProvider.otherwise("/first"); 

     $stateProvider 
     .state("first", { 
      url: "/first", 
      templateUrl: "first.html" 
     }) 
     .state("second", { 
      url: "/second", 
      templateUrl: "second.html" 
     }); 

    }); 

    app.controller("ctrl", function($scope){ 

     $scope.searchAll = ""; 

     $scope.clearSearch = function() { 
      $scope.searchAll = ""; 
     }; 
    }); 
</script> 

页:

<body ng-controller = "ctrl"> 
<div class = "container" > 

    <button type="button" class="btn btn-success"><a ng-href="#/first">First</a></button> 
    <button type="button" class="btn btn-success"><a ng-href="#/second">Second</a></button> 
    <br> 
    <ui-view><ui-view> 
</div> 
</body> 

州第一:

FIRST SIDE!!!!! 
<input type="text" class="form-control" ng-model="searchAll"></input> 
<a href="" data-ng-click="clearSearch()">X</a> 

国家二级:

SECOND SIDE!!!! 
+0

为什么你这样做?它很简单,为什么你在状态使用这个? –

+0

我需要更改页面而不刷新,其中一个页面包含必须通过按钮进行清理的输入。它很简单,但不起作用。 – Luq

回答

0

我不是100%确定从您的描述,但在猜测您的状态模板中的属性不会被绑定到您的控制器的$范围,因为它们不是当您的完整页面控制器实例化时出现。

所以,几件事情:

你最好具有每个UI-意见单独的控制器,而不是针对整个页面的单个控制器,这样的控制器被绑定到个别状态模板,当你移动到该状态。

$stateProvider 
    .state("first", { 
     url: "/first", 
     templateUrl: "first.html", 
     controller: 'FirstCtrl as first' 
    }) 

而不是具有用于清除按钮可引起浏览器的空HREF刷新除非添加e.preventDefault();对于点击事件,使用span或div标记更容易。

使用ui-srefs指向每个状态的链接而不是ng-href,例如。

<a ui-sref="first">First</a> 

最后,这是一个很好的时间停止使用,因为它是在2角消失$范围,而不再是最佳做法,角1 *应用程序 - 使用控制器的语法,而不是 - https://toddmotto.com/digging-into-angulars-controller-as-syntax/

看到你的代码在https://plnkr.co/edit/3yStlPEozNGM886nEoXg?p=preview上面的更改 - 和清除按钮按预期工作

+0

好的。非常感谢你,但是两名控制员给我另一个问题。我怎样才能在这两个控制器之间传输变量?我应该使用localStorage还是其他? – Luq

+0

做到这一点的最好方法是获得一个服务,这个小例子可能是过度杀伤性的,但这是最好的缩放比例 - 将它添加到plunkr中,但是明天就没有时间抱歉。 – glendaviesnz

+0

我向plunkr添加了一项基本服务,以显示如何使用它来在控制器之间共享数据。您应该尝试让控制器专注于单一视图,并将可重用逻辑和数据移至服务。 – glendaviesnz