1

我正在尝试使用工具提示创建一个输入元素并将一个函数绑定到 enter keypress 事件。这些功能中的每一个都可以单独工作,但不能组合使用。这是标记:

  <input type="text"
    tooltip="tooltip text" 
    tooltip-placement="top"
    tooltip-trigger="mouseover"
    ng-model="currentTag" 
    ng-keypress="addTag($event)" />

和控制器相关的部分:

  $scope.addTag = function($event) {
    if($event.keyCode !== 13) return;

    console.log($scope.currentTag);     <---- currentTag is undefined here.
    ...
  };

如果我省略工具提示指令,则代码可以正常工作。使 currentTag 未定义的 $scope 会发生什么?我该如何解决这个问题,以便上述工作?

4

2 回答 2

2

你需要有:

ng-model=" $parent .currentTag"


angular-ui boostrap FAQ 在“我的输入元素在我放置工具提示/弹出框时停止工作”部分中解决了这个特定问题。

大概是指angular < 1.2.0 中的范围行为,FAQ 状态(强调添加)

这是一个范围界定问题。在当前版本的 AngularJS 中,每个 DOM 元素可以有一个且只有一个范围。[...] 目前解决此问题的最佳选择是在 ngModel 中为表达式添加范围的前缀

你不能仅仅通过遵循“总是有一个”的最佳实践指南来解决它。在你的 ng 模型中”您需要通过实际绑定到parent中的值来解决角度范围限制。

不用担心,当前作用域也会通过从 parent 继承获得相同的值。所以在绑定到之后$parent.currentTag,你就可以把它称为$scope.currentTag

于 2014-05-14T23:44:23.177 回答
0

在回到 RTFM 关于角度范围后,我偶然发现了这个视频,它给了我答案。

总之,上面的模板 ng-model 应该是

ng-model="whateverYourCurrentModelIs.currentTag"

并且应该在控制器中相应地访问。

于 2013-09-29T13:39:36.750 回答