我读到了关于 angularJS 的新语法controller as xxx
语法
InvoiceController as invoice告诉Angular实例化控制器并将其保存在当前范围的变量发票中.
可视化:

好的,所以$scope我的控制器中没有参数,控制器中的代码会更清晰.
但
我将不得不在视图中指定另一个别名
所以到现在为止我能做到:
<input type="number" ng-model="qty" />
....controller('InvoiceController', function($scope) {
// do something with $scope.qty <--notice
Run Code Online (Sandbox Code Playgroud)
现在我可以这样做:
<input type="number" ng-model="invoic.qty" /> <-- notice
....controller('InvoiceController', function() {
// do something with this.qty <--notice
Run Code Online (Sandbox Code Playgroud)
题
这样做的目标是什么?从一个地方删除并添加到另一个地方?
我很高兴看到我错过了什么.
我想在AngularJS视图模板中使用Underscore/Lodash/_.这样我可以使用_如下所示:
<li ng-repeat="number in _.range(100, 125)"><!-- Some logic here --></li>
Run Code Online (Sandbox Code Playgroud)
就此而言,我们可以使用Lodash的任何有用功能.
我们可以通过在控制器和指令的$ scope中添加_来实现这一点,如下所示:
$scope._ = _;
Run Code Online (Sandbox Code Playgroud)
但我想进行一次性配置/更改,为每个视图模板的每个范围添加_.
我觉得有用的一种方法是:
$rootScope._ = _; //Have this line in .run() method.
Run Code Online (Sandbox Code Playgroud)
这适用于控制器和指令的所有视图.但这不适用于隔离范围指令的视图.我再次必须在指令定义中添加($ scope._ = _;).
是否有可以实现此目的的一次性/单一地点更改/配置/代码?
注意:另一个问题如何使lodash与Angular JS一起使用?专门讨论在ng-repeat中使用lodash.但我的问题是在每个视图模板(包括指令视图模板)中使用lodash.这是我发现隔离范围指令的限制.
角度新手在这里.我正在尝试理解在开发Angular应用程序时使用的范例,这样我就可以使用外部库,同时保持Angular应用程序的可重用性.
所以想象我有一个form使用ng-submit:
<form ng-submit="submit()">...<!--code goes here --></form>
Run Code Online (Sandbox Code Playgroud)
然后内部相应的ng-app和ng-controller(假定那些在父元素的声明),我有我的submit功能.但是,仅在此页面上,我想在提交后使用自定义警报库:
$scope.submit = function(){
// code goes here to submit form data
//now tell the user that save was successful
customAlertLibrary.alert("your data has been saved")
}
Run Code Online (Sandbox Code Playgroud)
现在这不是可重复使用的代码,是吗?我可能希望ng-app在另一个页面上重复使用它来修改和提交数据,但不想使用自定义警报库.看起来你被困了,因为ng-submit属性限制你在相应的ng-app,而不是外部函数内的函数.那么在不将其加入模型的情况下,将我的Angular代码调用其他Javascript代码的正确方法是什么?