在普通html中插入AngularJS指令(ng-click)

时间:2016-05-29 23:56:50

标签: javascript html angularjs angularjs-directive

我想在平面HTML中插入特定的AngularJS代码,并且编译它看起来像这样:

<a ng-click="viewUserstory(567456436)>

为此,我做了以下事情:

在我的服务中:

function parseScrumEvents(scrumMessageJSON) {

      var messageText = "<p><strong> #" + scrumMessageJSON.num + " </strong>" +
            "<a ng-click='viewUserstory("+scrumMessageJSON.userstory.id+")'>scrumMessageJSON.subject</a> </p>";

      return messageText;

 };

在我的控制器中:

$scope.viewUserstory = function (userstoryid){
        console.log(userstoryid);
      };

$scope.getScrumMessage = function ($index) {
    var scrumMessageString = $scope.listaMensajes[$index].text;
    var scrumMessageMiddle = JSON.parse(scrumMessageString);
    var messageText = ScrumParseService.parseScrumEvents(scrumMessageMiddle);

    return messageText;

  };

在我的HTML中:

<span bind-html-compile="getScrumMessage($index)"></span>

在我的指令中:

angular.module('myAppAngularMinApp')
  .directive('bindHtmlCompile', ['$compile', function ($compile) {
    return {
      restrict: 'A',
      link: function (scope, element, attrs) {
        scope.$watch(function () {
          return scope.$eval(attrs.bindHtmlCompile);
        }, function (value) {
          // In case value is a TrustedValueHolderType, sometimes it
          // needs to be explicitly called into a string in order to
          // get the HTML string.
          element.html(value && value.toString());
          // If scope is provided use it, otherwise use parent scope
          var compileScope = scope;
          if (attrs.bindHtmlScope) {
            compileScope = scope.$eval(attrs.bindHtmlScope);
          }
          $compile(element.contents())(compileScope);
        });
      }
    };
  }]);

但是,我的浏览器控制台返回错误:

Error: [$parse:syntax] Syntax Error: Token 'b73ecf1f7b15315359e96' is unexpected, expecting [)] at column 18 of the expression [viewUserstory(574b73ecf1f7b15315359e96)] starting at [b73ecf1f7b15315359e96)].

我不知道如何编程来工作。 如果您知道其他方法,也会有所帮助。 有任何想法吗? 非常感谢你的帮助:D

1 个答案:

答案 0 :(得分:1)

您需要使用引号(简单或双精度)并围绕您的动态值。

你的服务应该像这样:

#include "class.hpp"
int main()
{
    MyClass<int> c(14);
}
  

可能会发生这种情况,因为angular认为您的动态值已经过去了   在你的函数中ng-clik绑定是一个标识符(一个名字   范围内的变量)。

我猜你试图将值传递给你的函数,基于此,你需要使用引号。