angular: 嵌套指令 ngmodel

angular: nested directive ngmodel

假设我们有一个带有嵌套指令的指令。这两个指令都希望在数据显示之前更改数据。我使用 ngModelController 来做到这一点,但我愿意接受其他建议。

我的问题:如果不使用 scope.$apply() 我无法让它工作,但另一方面 scope.$apply() 在我使用它时会抛出一个错误,这表明它是不必要的。

这里是问题的答案:http://embed.plnkr.co/RROBxuITLpYnGkHSQAe3/preview

我做错了什么?

我认为您应该阅读更多关于 ngModelController 的内容,尤其是 $formatters $parsers$render。这是很棒的教程:http://www.chroder.com/2014/02/01/using-ngmodelcontroller-with-custom-directives/. They are also explaind in that question: ngModel Formatters and Parsers

在您的情况下,您可以将 $watch 替换为格式化函数。当从控制器更改值时调用格式化程序。您可以在格式化程序函数中操作数据,然后将其设置为 $viewValue。好的做法是尽可能少地使用 $watches。

此外,恕我直言,使用:

scope: {
 myVal: '=ngModel'
}

看起来很糟糕。对于将使用您的代码的其他程序员来说,这可能会造成混淆。 ngModel 应该放在 require 属性.

中使用

我会这样做: http://plnkr.co/edit/Ve1Ipm53BiYorjtxron5?p=preview