angularjs ng-click无法更改$ scope变量?

时间:2014-03-04 12:27:10

标签: javascript angularjs

我很困惑,我有一个看起来像这样的控制器..

angular.module('publicRegApp')
  .controller('CompanyNameController', function ($scope) {
    $scope.title = 'Title One';

    $scope.onSearch = function(){
        console.log("clicked");
        $scope.title = "Title Two";
    }

  });

在我的模板中我有:

<button type="submit" class="btn btn-default" ng-click="onSearch()">Search</button>

当我单击按钮时,控制台日志会被触发但$ scope.title不会更改。我很困惑请帮忙: - (

3 个答案:

答案 0 :(得分:3)

如果你照顾这些东西,它会起作用:

  1. 确保您有ng-app="publicRegApp"某处
  2. angular.module("publicRegApp")更正您的Javascript angular.module("publicRegApp", [])表示你不这样做 取决于其他角度模块。
  3. 确保{{title}}在控制器范围内
  4. 以下是工作示例:http://jsbin.com/xotaf/5/edit

答案 1 :(得分:1)

我的猜测是模板中的{{title}}超出了控制器的范围。我强烈建议检查一下;)

$ scope。$ apply是非常糟糕的建议,它没有做你认为它在做的事情

------------ EDIT ---------

检查这个plunker pls

http://plnkr.co/edit/0LyUaGWK4J5c9EY74ndw?p=preview

答案 2 :(得分:1)

不完全确定原因,但

<button type="submit">

是个问题。改为

<button type="button">

修好了。

然后我意识到我应该在按钮的父元素上使用ng-submit,这也修复了问题(只要我将按钮保留为提交当然)