虽然我非常小而且非常快速的应用程序并不是真正的性能问题,但我有兴趣在开始处理大型应用程序之前熟练处理大型应用程序。这使我找到了以尽可能多的方式优化AngularJS的方法,并将这些优化集成为我的“正常”编码例程的一部分。所以!我现在已经摸不着头几个小时,搜索文章和文档,试图找到最好的方法来实现以下目标:
有关上述内容的一些问题: 这会节省我在$ digest周期中的时间吗?或者,如果我只使用ng-model的双向数据绑定无关紧要?
我的另一个问题是涉及更多。
这是我的模板:
DropdownTemplate.html
<div class="form-group">
<label for="{{::regarding}}" class="col-sm-12 control-label">{{::regarding}}</label>
<div class="col-sm-12">
<select class="form-control" id="{{::regarding}}" data-ng-model="data" data-ng-change="update()">
<option selected>0</option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
<option>7</option>
<option>8</option>
<option>9</option>
<option>10</option>
<option>11</option>
<option>12</option>
<option>13</option>
<option>14</option>
<option>15</option>
<option>16</option>
<option>17</option>
<option>18</option>
<option>19</option>
<option>20</option>
</select>
</div>
</div>
这是我的指示:
.directive('trDropdown', ['Ticket', function(Ticket) {
return {
restrict: 'E',
templateUrl: 'DropdownTemplate.html',
scope: {
regarding: '@'
},
link: function($scope, $elem, $attrs){
$scope.data = 0;
$scope.update = function (){
Ticket[$scope.regarding] = $scope.data;
//console.log(Ticket[$scope.regarding]);
}
}
}
}]);
以下是我在主html页面中使用此自定义元素时的样子:
<tr-dropdown regarding="Adults"></tr-dropdown>
到目前为止,我的代码运行应该是这样,除了一个小bug。错误是,如果我不包括关于$ scope.data = 0的位;在指令的链接部分,当我的自定义元素被附加到主html页面时,属性“selected”(或甚至selected =“selected”)不会注册。尽管存在这个错误(这不是我主要考虑的问题),但我觉得这对我来说是最优雅的方式来处理单向绑定的概念,如果我甚至需要它的话。我知道有一个名为 bindonce 的插件我愿意使用,虽然我一直在寻找原生解决方案。
为此,我们非常欢迎通过他人的斗争找到的任何发现!
**编辑:一次性绑定现在已成功运行,但我遇到了一个奇怪的异常现象。 Batarang将表达式{{:: approx}}显示为继续提取资源,每次更改其中一个下拉列表。据我所知,{{:: approx}}应该取消注册,甚至不是进一步表现页面的因素。是什么赋予了? **