通过更改的值绑定指令

时间:2016-07-19 16:50:57

标签: angularjs angularjs-directive

我是棱角分明的新手,我已经搜索了很多可以解决我问题的答案。

我有两个指令' ms-list'和' ms-view'。在特定的屏幕中,ms-list'出现在&ms; ms-view'它根据视图控制器中传递的参数通过范围显示数据到list指令。

当此屏幕第一次加载时,' ms-list'显示数据就好了。当您更改作为list指令中的参数的属性时,它不会执行任何操作。

查看指令

 angular
.module('app.core')
.controller('MsViewController', MsViewController)
.directive('msView', msViewDirective);

function MsViewController($http, $scope) {
var vm = this;
  //function to change the parameter's value
  function changeParam(param) {
     vm.selectedParam = param;
  }
}

function msViewDirective() {
   return {
     restrict: 'E',
     require: 'msView',
     controller: 'MsViewController as MsView',
     templateUrl: 'app/core/directives/ms-view/ms-view.html',
     compile: function (tElement) {
       // Add class
       tElement.addClass('ms-view');
       return function postLink(scope, iElement) {
         // Data
       };
    }
  };
}

在' ms-view' html文件我称之为' ms-list'指令并传递一个通过函数更改的参数' changeParam'在我上面显示的视图控制器中。

<ms-list object="MsView.selectedParam"></ms-generic-list>

列表指令

 angular
.module('app.core')
.controller('MsListController', MsListController)
.directive('msList', msListDirective);

function MsListController($state, $http, $scope) {
   var vm = this;
   vm.params = {
     "object": $scope.object,
   };

   //Function to fetch data according to params list
   fetchData(vm.params);
}

function msListDirective() {
  return {
    restrict: 'E',
    replace: true,
    transclude : true,
    scope: {
      object: '='
    },
    controller: 'MsListController as MsList',
    templateUrl: 'app/core/directives/ms-list/ms-list.html',
    compile: function (tElem, tAttrs) {
      tAttrs.$observe('object', function (data) {
          console.log("changed value = " + data);
      }, true);
      // Add class
      tElem.addClass('ms-list');
    }
  };
}

观察参数&#39;对象&#39;在内部编译功能中,每当我更改它时,它似乎都采用了正确的值。问题是我不知道如何触发列表控制器内部的功能,以便根据更改的值获取新数据。

正如我所提到的,我是棱角分明的新人,所以我不知道我的实施是否是最好的。

谢谢。

0 个答案:

没有答案