当前位置: 首页 > 面试题库 >

带角度ng-click并调用控制器功能不起作用

方承弼
2023-03-14
问题内容

我需要将变量传递给另一个控制器。我有以下与ListCtrl相关的代码

<a href="#items" data-router="article" ng-click="changeListName('metro')">

链接将转到另一个控制器ItemCtrl。

我想将变量传递给ItemCtrl。我想到了使用一个名为SharedProperties的服务:

service('sharedProperties', function () {
    var list_name = '';

    return {
        getListName: function() {
            return list_name;
        },
        setListName: function(name) {
            list_name = name;
        }
    };
});

单击链接后,我将调用角度单击事件以触发以下功能

$scope.changeListName = function(name) {
    sharedProperties.setListName(name);
};

但是,ng-click似乎并没有改变我共享属性的值…

更新

我在ng-click触发的函数中放置了一个警报,并且警报应该被触发。

但是,当我这样编写函数时:

$scope.changeListName = function(name) {
    sharedProperties.setListName(name);
};

它不起作用…看起来像是“ sharedProperties.setListName(name);” 没有执行…

如果我使用虚拟名称(例如Metro)将其放在函数之外,则它可以工作。

更新3

我尝试了多种方法,并且我很确定问题出在此功能上:

$scope.changeListName = function(list_name) {
    sharedProperties.setListName(list_name);
};

您知道为什么会这样吗?


问题答案:

您可能应该将ngHref指令与ngClick一起使用:

 <a ng-href='#here' ng-click='go()' >click me</a>

这是一个示例:http :
//plnkr.co/edit/FSH0tP0YBFeGwjIhKBSx?p=preview

<body ng-controller="MainCtrl">
    <p>Hello {{name}}!</p>
    {{msg}}
    <a ng-href='#here' ng-click='go()' >click me</a>
    <div style='height:1000px'>

      <a id='here'></a>

    </div>
     <h1>here</h1>
  </body>

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope) {
  $scope.name = 'World';

  $scope.go = function() {

    $scope.msg = 'clicked';
  }
});

我不知道这是否可以与您正在使用的库一起使用,但至少可以让您链接和使用ngClick函数。

更新

这是场景的演示,可以很好地使用服务。

http://plnkr.co/edit/FSH0tP0YBFeGwjIhKBSx?p=preview

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope, sharedProperties) {
  $scope.name = 'World';

  $scope.go = function(item) {
    sharedProperties.setListName(item);


  }

  $scope.getItem = function() {

    $scope.msg = sharedProperties.getListName();
  }
});

app.service('sharedProperties', function () {
    var list_name = '';

    return {

        getListName: function() {
            return list_name;
        },
        setListName: function(name) {
            list_name = name;
        }
    };


});

编辑

请查看https://github.com/centralway/lungo-angular-
bridge
,其中讨论了如何使用隆胸和角度。另请注意,如果在浏览到另一个链接时页面完全重新加载,则需要将共享属性持久存储在localstorage和/或cookie中。



 类似资料:
  • 问题内容: 无法使用ControllerAs 有人可以向我解释以下情况吗? 作品 休息时间 那个使它成为关键字的字母-我想要-破坏了森林。 为什么是这样? PS我知道这个约定,但是我发现它干扰了控制器/视图模型的可移植性。 问题答案: 问题是肯定 不会 说是在JavaScript保留字。 控制器中 没有规则, 因为 语法表明您需要将变量的值分配给与控制器同名的变量,我很确定angular也不会这样

  • 问题内容: 我在PhoneGap中遇到ngView的问题。 一切似乎都可以正常加载,我什至可以使用ng-controller使基本控制器正常工作。但是,当我尝试在ngView中使用路由时,什么也没发生。 index.html app.js 每次单击链接时,Eclipse记录器都会显示该链接,而在没有链接的情况下尝试该链接会引发一个错误,即找不到该路径。 从我在其他任何地方已经做好的准备,这应该可以

  • 问题内容: 我有指令 控制器: 在索引页面上,我有: 每当包含不同的html时,我的自定义服务都会返回 我想做的是每次在指令的内容中推送不同的值以对其进行编译并将其放入html并处理控制器中的click函数时。因为我是AngularJS的新手,所以一段时间以来一直在努力解决这个问题。请帮忙。 问题答案: 您不需要处理$ sce即可达到目的。 您可以将as字符串传递给指令。在指令中编译后,它将起作用

  • 我在div上使用了,它可以正常工作,但是当我在其他输入上使用时,div上的停止工作。 工作代码[单击时调用附加项(项目)] 破损的代码[addItem(项目)未被调用] 相关JS代码 这里是http://plnkr.co/edit/eI5dvczO2E1Cp1SBPgQx?p=preview点击输入将带来下拉。在一种情况下,单击下拉菜单会将项目添加到选定列表中,但在其他情况下不会。 我已经试过调试

  • 问题内容: 我有一些要从json文件加载的html数据。 我通过在应用程序中使用ngSanitize并使用ng-bind-html来显示此html数据。 现在我想从标准转换json blob中的任何链接 至: 。 所以我在json文件上做了一些regExp来转换链接,但是出于某种原因,但是ng-bind-html过滤掉了ng- click的输出,我不知道为什么。是否应该这样做,如果可以,可以禁用此

  • 我有这段代码,我看不出问题的根源在哪里,我在chrome控制台我的控制器中没有发现任何错误: 和在div-loadedthings中正确加载; 控制台中的newMsgs按照它应该的方式进行解析; 我让它为其他页面工作,但似乎我错过了这一页上的一些东西。我有