working remove not empty blank angularjs angularjs-scope angularjs-ng-click angularjs-ng-show

angularjs - remove - ng options not working



La visualización del método en el alcance no se ejecuta (2)

Tengo un conjunto de directivas que comparten un alcance

Actualizar:

El código está disponible como un plunk aquí http://plnkr.co/edit/JZ77bsZgGrw6N4K718Is?p=preview

todo-item:

app.directive("todoItem",function(DeleteTodo,$log){ var dirDefObj = { restrict:''E'', templateUrl:''app/templates/todo.html'', scope:{ todo:''=value'' }, controller:function($scope){}, replace:true }; return dirDefObj; });

modelo:

<div class="ui card"> <todo-formui ng-show="todo.editMode"></todo-formui> <todo-cardui ng-show="!todo.editMode"></todo-cardui> </div>

Hay dos directivas que heredan el alcance de esta directiva:

todo-cardui

app.directive(''todoCardui'',function(){ var dirDefObj = { restrict:''E'', templateUrl:''app/templates/display-todo.html'', scope:false, replace:true, controller:function($scope) { $scope.clickDone = function clickDone(){ //two tasks (1)toggle the done value on the todo (2) toggle the btnText on the todo $scope.todo.done = !$scope.todo.done; $scope.todo.btnText = $scope.todo.done?''Reinstate'':''Done''; }; $scope.remove = function remove() { DeleteTodo.delete($scope.todo); $scope.$emit(''todo:deleted'',$scope.todo); }; $scope.edit = function edit(value) { $scope.todo.editMode = true; $scope.savedState = angular.extend({},$scope.todo); }; } }; return dirDefObj; });

modelo:

<div> <div class="content"> <i class="right floated blue pencil icon" ng-click="edit()"></i> <header class="ui medium header"> <span ng-class="{''done-todo'':todo.done,''normal-todo'':!todo.done}">{{todo.task}}</span> </header> <div class="description"> <p>{{todo.description}}</p> </div> </div> <div class="extra content"> <button class="ui small green toggle button floated left" ng-click="clickDone()">{{todo.btnText}}</button> <button class="ui small red button floated left" ng-click="remove()">Delete</button> </div> </div>

todo-formui:

app.directive("todoFormui",function(EditService){ var dirDefObj = { restrict:''E'', templateUrl:''app/templates/edit-todo.html'', scope:false, controller:function($scope){ $scope.display = function display(){ console.log("Inside the edit to preview function"); $scope.editMode = false; }; $scope.save = function(){ EditService.edit($scope.todo); }; $scope.discard = function(){ $scope.todo={ task:'''', dscription:'''', btnText:'''' }; $scope.todo = $scope.savedState; }; }, replace:true }; return dirDefObj; });

modelo:

<div ng-class="{description:show_modal,content:!show_modal}"> <i class="right floated blue unhide icon" ng-click="display()"></i> <form class="ui small form"> <div class="field"> <label>Task</label> <input type="text" name="task" placeholder="What do you want to do?"ng-model="todo.task"> </div> <div class="field"> <label>Description</label> <textarea ng-model="todo.description"></textarea> </div> <div class="two fields"> <button class="ui red button floated right">Discard</button> <button class="ui submit green button floated right" ng-click="save()">Save</button> </div> </form>

Cuando ejecuté el código, descubrí que la función de visualización en todo-formui no se ejecutaba, sin importar dónde lo colocara o qué intenté hacer. La función de guardar en el mismo ámbito se ejecuta sin problemas.


Es porque el ícono se encuentra debajo de otro elemento html y el evento click no se activa. Agregue un claro después del ícono de "vista previa" (que está flotando) para insertar el formulario donde debería estar. Use un inspector DOM y pronto se dará cuenta del problema.


En su función de vista previa (como se menciona en Plunker), debe actualizar el alcance como

$ scope.todo.editMode = false;

en lugar de

$ scope.editMode = false;

entonces la vista previa estará disponible

Espero que esto ayude