如何在控制器中访问和更新ng-model?

时间:2016-06-01 20:16:15

标签: angularjs controller angular-ngmodel

所以我定义了这个角度指令:

angular.module('photoSynthesysApp')
.directive('tagList', function(){
  return {
    template: '<div class="tag-form"> <label> LABELS </label>'+

'<button class="btn-xsmall" ng-click="clicked = !clicked">+</button>' +
'<div ng-show="clicked">'+
  '<input type="text" ng-model="newTag">     '+
  '<button ng-click="vm.addTag()"> Add </button>' +
  '</div>'+
'<ul>'+
  '<div ng-repeat="tag in vm.tagListFromDatabase">' +
  '<li>{{tag}}</li>' + '</div>'+
'</ul>'+
'</div>',

controller: taggerController,
controllerAs: "vm",
restrict: "E"
  }
});

function taggerController() {
  this.tagListFromDatabase = ["Bridges","Arches","Roads","Towers"];
  this.clicked="false";
  this.addTag = function(){
    this.tagListFromDatabase.push(this.newTag);
    console.log(this.newTag);
  };
}

Console.log给我未定义,不打印任何内容。我不明白为什么不应该这样做。

另外,我正在使用这样的模板,因为我无法弄清楚如何进行templateUrl,但我可以稍后想出来。

1 个答案:

答案 0 :(得分:2)

您正在尝试访问绑定到控制器(Outlook.MailItem mailItem = item as Outlook.MailItem; Outlook.Inspector inspector = mailItem.GetInspector; Word.Document document = (Microsoft.Office.Interop.Word.Document)inspector.WordEditor; Word.Application app = document.Application; app.WindowSelectionChange += new Microsoft.Office.Interop.Word.ApplicationEvents4_WindowSelectionChangeEventHandler(YOUR_METHOD_HERE); )的newTag属性,但是在模板中,您将vm绑定到范围对象,而不是控制器。

正确的代码是:

ngModel

注意,<input type="text" ng-model="vm.newTag"> 将模型绑定到控制器,而vm.newTag单独绑定到范围。