通过指令将元素添加到 DOM 并从控制器绑定范围监视(角度.js)
Add element to DOM via directive and bind scope watching from controller (angular.js)
这是一个小应用程序,您可以在其中添加项目,编辑和删除 - 所有这些都在控制器中描述,基于角度2路数据绑定。
http://cssdeck.com/labs/schedule-of-the-red-hood
每次添加元素时,都应以编程方式在 calednar-bar 中插入一个元素,如指令的模板中所述:
template: '<div ng-repeat="event in events" class="event">' +
'<h3 ng-model="event.Name">{{event.Name}}</h3>' +
'<span ng-model="event.StartTime; event.EndTime" class="time">{{event.StartTime}}-{{event.EndTime}}</span>' +
'</div>'
虽然我无法了解如何从控制器链接范围,但请绑定来自控制器的元素插入:
$scope.addEvent = function(event, attrs) {
$scope.events.push(event);
$scope.event = {};
var eventGrid = angular.element(document.createElement('eventGrid')),
el = $compile(eventGrid)($scope);
angular.element(document.body).append(eventGrid);
$scope.insertHere = el;
}
- 据我现在了解,我的代码在 DOM 中创建了一个元素,但没有使用指令中的模板......我该怎么做?所选的代码结构是否适合此目标?
你需要更多的数据驱动,忘记向dom添加东西。 例如
$scope.addEvent = function(event, attrs) {
$scope.events.push(event);
$scope.event = {};
/*var eventGrid = angular.element(document.createElement('eventGrid')),
el = $compile(eventGrid)($scope);
angular.element(document.body).append(eventGrid);
$scope.insertHere = el;*/
}
//add an order by to your ng-repeat
<li ng-repeat="event in events|orderBy:StartTime">
不要将StartTime
另存为字符串,而是将其另存为数字,并使用过滤器将秒转换为友好的HH:MM:AM|PM.
从字符串到秒的转换是最困难的部分,但这是正确的方法。
相关文章:
- 如何使用ngrepeat和双向绑定获得指令的隔离范围
- Angularjs无法将单选按钮与嵌套范围内的模型绑定
- AngularJS绑定没有'在没有填充父范围的情况下无法工作
- 对于使用传递的数据计算的局部范围变量,角度绑定在自定义指令中不起作用
- Knockout.js绑定范围
- 如果指令包含在另一个指令中,我如何在隔离范围内添加双向数据绑定属性
- 如何使用JavaScript/Jquery/Knockout JS将数字数组绑定到范围滑块
- 绑定promise回调函数的“this”范围
- 防止Angular范围变量通过引用自动绑定到服务私有成员
- 内联此范围'绑定'
- 使用绑定更改范围
- AngularJS与ng重复的OneTime绑定不会't让我刷新范围
- 选择绑定到同一范围的按钮,单击时会相互触发.如何从angular.js中的两个选择列表按钮解除范围绑定
- 谷歌地图api检查标记在绑定范围内
- 挖空 - 单击绑定到对象函数 - 范围问题
- AngualrJS:为什么组件范围不绑定
- 角度.js指令模板 URL 无法绑定范围
- 将重复控件绑定到会话或视图范围变量
- 将不同的范围绑定到ES6 =>函数操作符
- 异步范围绑定回调中的JavaScript作用域操作不适用